|  | 
 
| 
学习了链栈,可是下面代码总是编译不过,大家能帮忙看看哪错了吗
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 #include <stdio.h>
 #include <malloc.h>
 
 typedef int datatype;
 
 typedef struct snode
 {
 datatype data;
 struct snode *next;
 }StackNode,*LinkStack;
 LinkStack top;
 
 LinkStack InitStack()
 {
 LinkStack s;
 s = (LinkStack)malloc(sizeof(LinkStack));
 top = NULL;
 return s;
 }
 
 int EmptyStack(LinkStack p)
 {
 if(top==NULL)
 return 1;
 else
 return 0;
 }
 
 
 void OutputStack(LinkStack p)
 {
 LinkStack q=NULL;
 q=top;
 while(q!=NULL)
 {
 printf("%3d",q->data);
 q=q->next;
 }
 printf("\n");
 }
 
 LinkStack PushStack(LinkStack p,datatype x)
 {
 LinkStack q;
 q=(LinkStack )malloc(sizeof(LinkStack));
 q->data = x;
 q->next = top;
 top = q;
 return top;
 }
 
 LinkStack PopStack(LinkStack p,datatype *x)
 {
 LinkStack q;
 if(top==NULL)
 return NULL;
 else
 {
 *x = top->data;
 q=top;
 top=top->next;
 free(q);
 return top;
 }
 }
 
 
 main()
 {
 LinkStack p=NULL;
 int x;
 InitStack(p);
 OutputStack(p);
 printf("请输入你想要入栈的元素");
 while(1)
 {
 int x;
 scanf("%d",&x);
 if(x==-1) break;
 PushStack(p,x);
 }
 OutputStack(p);
 while (!EmptyStack(p))
 {
 PopStack(p,&x);
 printf("%d ",x);
 }
 }
 
 | 
 |