📄 lianzhan.cpp
字号:
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100; //存储空间初始分配量
#define STACKINCREMENT 10; //存储空间分配增量
typedef int ElemType;
typedef struct linknode
{
int data;
struct linknode *next;
}LiStack;
void InitStack(LiStack *&s); //初始化栈
void DestroyStack(LiStack *&s); //摧毁栈
void ClearStack(LiStack *&s); //清空栈
int StackLength(LiStack *s); //返回栈的长度
void StackEmpty(LiStack *s); //判断栈是否为空
void Push(LiStack *&s,ElemType e); //进栈
int Pop(LiStack *&s,ElemType e); //出栈
int GetTop(LiStack *s,ElemType e); //取栈顶元素
void DispStack(LiStack *s); //显示栈中元素值
void InitStack(LiStack *&s) //初始化栈
{
s=new LiStack;
s->next=NULL;
}
void ClearStack(LiStack *&s) //清空栈
{
s->next=NULL;
}
void DestroyStack(LiStack *&s) //销毁栈
{
delete s;
cout<<"栈已销毁"<<endl;
exit(0);
}
int StackLength(LiStack *s)//返回栈的长度
{
int i=0;
for(LiStack *p=s->next;p;p=p->next)
i++;
cout<<"元素个数为"<<i;
return i;
}
void StackEmpty(LiStack *s)//判断栈是否为空
{
if(s->next==NULL)
cout<<"为空栈"<<endl;
else
cout<<"非空"<<endl;
}
void Push(LiStack *&s,ElemType e)//进栈
{
LiStack *p=new LiStack;
p->data=e;
p->next=s->next;
s->next=p;
}
int Pop(LiStack *&s,ElemType e)//出栈
{
LiStack *p;
if(s->next==NULL)
return 0;
p=s->next;
e=p->data;
s->next=p->next;
delete p;
return 1;
}
int GetTop(LiStack *s,ElemType e)//取栈顶元素
{
if(s->next==NULL)
return 0;
e=s->next->data;
cout<<"栈顶元素是"<<e<<endl;
return 1;
}
void DispStack(LiStack *s)//显示栈中元素值
{
LiStack *p=s->next;
for(;p;p=p->next)
cout<<p->data<<" ";
cout<<endl;
}
void main()
{
LiStack *s;
InitStack(s);
Push(s,1);
Push(s,2);
Push(s,3);
Push(s,4);
Push(s,5);
cout<<"栈内元素:";DispStack(s);
cout<<endl;
cout<<" 输入要进行操作的序号"<<endl
<<"1 插入栈顶元素"<<endl
<<"2 删除栈顶元素"<<endl
<<"3 输出栈顶元素"<<endl
<<"4 输出栈内元素"<<endl
<<"5 清空栈"<<endl
<<"6 销毁栈"<<endl
<<"7 输出栈中元素个数"<<endl
<<"8 判断是否为空栈"<<endl;
int a,e;
char m='y';
while(m=='y')
{
cin>>a;
switch(a)
{
case 1: cout<<"输入要插入的数:";
cin>>e;
Push(s,e);
cout<<"栈内元素:";DispStack(s);
break;
case 2: Pop(s,e);
cout<<"栈内元素:";DispStack(s);
break;
case 3: GetTop(s,e);
cout<<"栈内元素:";DispStack(s);
break;
case 4: cout<<"栈内元素:";DispStack(s);
break;
case 5: ClearStack(s);
break;
case 6:DestroyStack(s);
break;
case 7: StackLength(s);
break;
case 8: StackEmpty(s);
break;
default: exit(0);
}
cout<<"继续请按y,退出请按任意键";
cin>>m;
}
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -