Почему нажатие стека вызывает ошибку сегментации? - PullRequest
0 голосов
/ 01 мая 2018

Как мой код на самом деле дает ошибку сегментации?

Я бы хотел сохранить TOS в качестве двойного указателя.

#include<stdio.h>
#include<stdlib.h>

typedef struct node_tag{
    int num;
    struct node_tag* next;
}NODE;

void push(int x, NODE **TOS){
    NODE* temp = (NODE*) malloc(sizeof(NODE));
    temp->num = x;
    temp->next = (*TOS);
    (*TOS) = temp;
}

int main(){
    NODE **TOS = NULL, *temp;
    printf("<<<Stack Push>>>\n");
    push(0, TOS);
    printf("%i\n", (*TOS)->num);
}

1 Ответ

0 голосов
/ 01 мая 2018

Вы должны использовать это так;

int main(){
    NODE *TOS = NULL, *temp;
    printf("<<<Stack Push>>>\n");
    push(0, &TOS);
    printf("%i\n", TOS->num);
}
...