二重リンク リストを使用して C でスタック構造を構築しましたが、リストの最後の要素をポップするときに segfault が発生しました。pop メソッドと関連するグローバルは次のとおりです。
typedef struct node {
int value;
struct node *prev;
struct node *next;
} node;
node *head = NULL;
node *tail = NULL;
int stackSize = 0;
int removeFromStack(){
node *tempNode = head;
if(stackSize <= 0){
emptyStackError();
}
int val = head->value;
if(stackSize == 1){
head = NULL; //Segfaults here
tail = NULL;
}
else{
head = head->next;
head->prev = NULL;
}
free(tempNode);
stackSize--;
return val;
}
明らかに、頭と尾をnullに設定するだけではいけません。代わりに何をすべきですか?