Мне нужно реализовать простой стек в C, но прошло несколько лет с тех пор, как я написал что-то на C, поэтому я немного заржавел.
У меня есть структура, определенная в файле .h, как этот,typedef struct _my_stack my_stack_t;
, а также функция, которая инициализирует стек my_stack_t* my_stack_new();
, и функция push void my_stack_push(my_stack_t *s, void *data);
в файле .c. Я определил стек и функцию init следующим образом:
struct _my_stack{
void* data;
struct _my_stack* next;
};
my_stack_t* my_stack_new(){
my_stack_t* mystack = NULL;
return mystack;
};
Затем я определил функцию push следующим образом:
void my_stack_push(my_stack_t *s, void *data){
my_stack_t* mystack = (my_stack_t*)malloc(sizeof(my_stack_t));
mystack->data = data;
mystack->next = s;
s=mystack;
};
Однако, похоже, push не работает, если я получаю ошибки сегментации при попытке получить доступ к данным элемента, который я нажал.так почему это не работает.в толчке он выделил место для элемента стека и поместил указатель на данные в переменную данных.и он берет указатель на текущий заголовок стека и помещает его в следующую переменную, а затем делает его указателем на текущий элемент.
примечание: файл .h задан, поэтому мне нужно взять функцииони там объявлены.