У меня возникла проблема с реализацией функции, которая удаляет первый элемент из стека. (Я знаю, что стек имеет минимум два элемента)Элемент pop head в стеке C
typedef struct Node {
T value;
struct Node *next;
} Node;
typedef struct Stack {
Node *head;
} Stack;
void Pop(Stack **st) {
if (!IsEmptyStack(*st)) {
Node* aux = (*st)->head;
(*st)->head = (*st)->head->next;
}
}
но то же самое происходит ... Segmentation fault.
Как я могу исправить функцию поп?
Вот другие функции, которые я использую:
void InitStack(Stack **st)
{
(*st) = (Stack *) malloc(sizeof(Stack *));
(*st)->head = NULL;
}
int IsEmptyStack (Stack *st)
{
if (!st)
return 1;
else
return 0;
}
Почему вы проходите ** st вместо просто * st? – JoulinRouge
Код выглядит нормально (как и не должен вызывать ошибку seg). Проблема, вероятно, в коде, который создает стек. –
@JoulinRouge Это школьное задание, и я не могу изменить определение функции –