#include
using namespace std;
typedef struct linknode
{
int data;
struct linknode *next;
struct node *top;
}LiStack;
void showmenu();
void InitStack(LiStack *&s);
void DestroyStack(LiStack *&s);
bool StackEmpty(LiStack *&s);
void Push(LiStack *&s);
void Pop(LiStack *&s);
bool GetTop(LiStack *s);
int main()
{int select;
LiStack *s;
char ok='y';
while(ok=='y')
{
showmenu();
cout<<"请选择操作(1-7),选0退出系统"<
cin>>select;
switch(select)
{
case 1:InitStack(s);break;
case 2:DestroyStack(s);break;
case 3:StackEmpty(s);break;
case 4:Push(s);break;
case 5:Pop(s);break;
case 6:GetTop(s);break;
default:cout<<"输入错 ";
}
cout<<"是否继续(y/n)";
cin>>ok;
}
return 0;
}
void showmenu()
{
cout<<"菜单"<
cout
cout
cout
cout
cout
cout
}
void InitStack(LiStack *&s)//----------------初始化栈
{s=(LiStack *)malloc(sizeof(LiStack));
s->top=NULL;
}
void DestroyStack(LiStack *&s)//-----------销毁栈
{LiStack *p=s,*q=s->next;
while(q!=NULL)
{
p=q;
q=p->next;
free(p);
}}
bool StackEmpty(LiStack *s) //-----------------判断栈空
{return(s->next==NULL);
}
void Push(LiStack *&s,int e) //-------------进栈
{LiStack *p;
p=(LiStack *)malloc(sizeof(LiStack));
e=p->data;
cout<<"栈内容为:"<
while(p=NULL)
{cin>>p->data;
p=p->next;}
cout<
void Pop(LiStack *&s)//------------出栈
{struct linknode *p;
if(s->top==NULL)
cout<<"此栈为空"<
else{
p=s->next;
cout<<"栈内容为:"<
while(p!=NULL)
{coutdata;
p=p->next;}
}
free(p);}
bool GetTop(LiStack *s) //-----------取栈顶
{int e;
if(s->next==NULL)
return false;
else {e=s->next->data;
return true;}
}