Tôi đang cố gắng tạo một ngăn xếp trong C cho vui, và nảy ra ý tưởng sử dụng cấu trúc để biểu diễn ngăn xếp. Sau đó, tôi thêm các con trỏ hàm vào cấu trúc cho các hoạt động push() và pop()."con trỏ" này trong C (không phải C++)
Cho đến nay tất cả đều tốt, nhưng, để thực hiện các hàm push() và pop() tôi cần tham khảo * bằng cách nào đó. Làm thế nào có thể (có thể nó?) Được thực hiện?
Đây là struct tôi
struct Stack {
int *data;
int current_size;
int max_size;
int (*push)(int);
int (*pop)();
};
Và như một ví dụ ở đây là đẩy
int push(int val) {
if(current_size == max_size -1)
return 0;
data[current_size] = val;
current_size++;
return 1;
}
Như bạn có thể tưởng tượng, trình biên dịch không có ý tưởng gì current_size
là, vì nó mong chờ một cái gì đó giống như stack->current_size
.
Điều này có thể khắc phục bằng cách nào đó không?
điểm con trỏ hàm trong cấu trúc ngăn xếp của bạn là gì? – Nyan
Để cố gắng nhận được câu trả lời nếu có thể gọi một chồng kiểu này như sau: 'stack-> push (10);'. Bây giờ, nếu câu trả lời không được đưa ra ở đây tôi có thể khá tự tin rằng nó thực sự là không thể. – foo