链栈,求大神看看我写的有什么问题,为什么运行会出错
#include"stdio.h"#include"malloc.h"
typedef int DataType; //定义栈的数据类型
typedef struct node
{
DataType data;
struct node *next;
}LinkStack;
//初始化栈
void InitStack(LinkStack *top)
{
// top=(LinkStack *)malloc(sizeof(LinkStack));
top->next=NULL;
}
//进栈
int Push(LinkStack *top,DataType x)
{
LinkStack *s;
s=(LinkStack *)malloc(sizeof(LinkStack));
if(!s) //当s==NULL执行
return 0;
s->data=x;
s->next=top->next;
top->next=s;
return 1;
}
//判断栈空
int EmptyStack(LinkStack *top)
{
if(top->next==NULL)
return 1;
else
return 0;
}
//出栈
int Pop(LinkStack *top,DataType *e)
{
LinkStack *s;
if(EmptyStack(top))
return 0;
s=top->next;
*e=s->data;
top->next=s->next;
free(s);
return 1;
}
//测试函数
void main()
{
LinkStack *top; //定义栈顶指针--相当头指针
InitStack(top);//初始化一个栈
// DataType e;
// e=1;
// Push(top,e);
// Pop(top,&e); printf("%d ",e);
}