0

二重リンク リストを使用して 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に設定するだけではいけません。代わりに何をすべきですか?

4

1 に答える 1