#include <stdio.h>
#include <stdlib.h>
#define M 10typedef struct stnode
{char data;struct stnode *next;
}LinkStack;void InitStack(LinkStack *&ls) //初始化栈
{ls=NULL;
}void PushStack(LinkStack *&ls,char x)//进栈
{LinkStack *p;p=(LinkStack *)malloc(sizeof(LinkStack));p->data=x;p->next=ls;ls=p;
}int PopStack(LinkStack *&ls,char &x)//出栈
{LinkStack *p;if(ls==NULL)return 0;else{p=ls;x=p->data;ls=p->next;free(p);return 1;}
}int GetTop(LinkStack *ls,char &x)//取栈顶元素
{if(ls==NULL)return 0;else{x=ls->data;return 1;}
}int StackEmpty(LinkStack *ls)//判断栈空
{if(ls==NULL)return 1;elsereturn 0;
}int main()
{LinkStack *ls;char e;InitStack(ls);printf("栈%s\n",(StackEmpty(ls)==1?"空":"不空"));printf("a,b,c,d进栈\n");PushStack(ls,'a');PushStack(ls,'b');PushStack(ls,'c');PushStack(ls,'d');PushStack(ls,'f');/*int i;for(i=0;i<5;i++){scanf("%c",&e);PushStack(ls,e);}*/printf("栈%s\n",(StackEmpty(ls)==1?"空":"不空"));GetTop(ls,e);printf("栈顶元素:%c\n",e);printf("出栈次序:\n");while(!StackEmpty(ls)){PopStack(ls,e);printf("%c ",e);}printf("\n");return 0;
}
不知为毛注释掉的那一行不行
转载于:https://www.cnblogs.com/liesun/p/7350350.html