求助,栈的基本程序问题
程序代码:
#include <stdio.h> #include <stdlib.h> typedef int DataType; typedef struct node { DataType elem; struct node *next; }*StackNode; typedef StackNode Stack; Stack Init_Stack(void) { Stack s; s=(struct node*)malloc(sizeof(struct node)); s->next=NULL; return s; } int Stack_empty(Stack s) { if (s->next=NULL) return 1; else return 0; } void Push(Stack s) { StackNode stack; DataType item; stack=(struct node*)malloc(sizeof(struct node)); printf("输入:"); scanf("%d",&item); stack->elem=item; stack->next=s->next; s->next=stack; } DataType Pop(Stack s) { StackNode temp; DataType element; if (Stack_empty(s)) { printf("空栈不能出栈!\n"); } else { temp=s->next; s->next=temp->next; element=temp->elem; free(temp); return element; } } int main(void) { Stack s; DataType element; s=Init_Stack(); Push(s); Push(s); element=Pop(s); printf("%d\n",element); element=Pop(s); printf("%d\n",element); element=Pop(s); printf("%d\n",element); return 0; }
为什么出栈函数不好使,一运行就崩溃。调试显示47行s->next自动变成NULL,是函数的指针传递问题吗?
求各位大神解答!谢谢谢谢!!