求助,栈的基本程序问题
程序代码:#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,是函数的指针传递问题吗?
求各位大神解答!谢谢谢谢!!








