为什么我的链栈不能正常出栈啊,请求帮助
#include <stdio.h>#include <stdlib.h>
typedef struct LinkStack
{
int data;
struct LinkStack *next;
}link;
//置空栈算法
link *SetNull(link *Top)
{
Top=NULL;
}
//判栈空算法
int Empty(link *Top)
{
if(Top==NULL)
return 1;
else return 0;
}
//初始化算法
link *LinkStackInit(link *Top)
{
//link *Top; //构造一个空栈
Top=(link *)malloc(sizeof(link));
return Top;
}
//进栈算法
void Push(link *Top,int x)
{
link *p;
p=(link *)malloc(sizeof(link));
p->data=x;
p->next=Top;
Top=p;
//return Top;
}
//出栈算法
int Pop(link *Top)
{
link *p;
int x;
if(Top==NULL)
return NULL;
else
{
p=Top;
x=Top->data;
Top=Top->next;
free(p);
return x;
}
}
//读栈顶元素算法
int GetTop(link *Top)
{
if(Top==NULL)
return NULL;
else return Top->data;
}
int main()
{
link *Top=NULL;
//Top=(link *)malloc(sizeof(link));
int x,i;
Top=LinkStackInit(Top);
Top=SetNull(Top);
for(i=0;i<4;i++)
{printf("输入栈元素:");
scanf("%d",&x);
//getchar();
Push(Top,x);
}
for(i=0;i<4;i++)
{
printf("输出栈元素:");
printf("%d",Pop(Top));
printf("\n");
}
return 0;
}