📄 lstack.cpp
字号:
#include "string.h"
#include <iostream>
using namespace std;
struct lnode{
char data;
struct lnode *next;
};
class Lstack
{
public:
Lstack(); //构造函数
~Lstack(); //析构函数
void push(char); //压棧
void pop(char); //出棧
void print(); //输出棧中元素
void length(void); //计算棧中元素的个数
void clean(void); //清空棧
private:
lnode *top;
};
Lstack::Lstack()
{
top=new lnode; //初始化必需分配存储空间
top=NULL;
}
Lstack::~Lstack()
{
clean();
}
void Lstack::push(char e)
{
lnode *q;
q=new lnode; //分配存储空间
q->data=e;
q->next=top;
top=q;
}
void Lstack::pop(char e)
{
if(top!=NULL)
{
e=top->data;
top=top->next;
cout<<e<<endl;
}
else
cout<<"this is an empty stack!!"<<endl;
}
void Lstack::print()
{
lnode *q;
q=top;
if(q==NULL)
{
cout<<"this is an empty stack !"<<endl;
}
while(q)
{
cout<<q->data<<endl;
q=q->next;
}
}
void Lstack::length(void)
{
lnode *q=top;
int i=0;
while(q)
{
i++;
q=q->next;
}
cout<<"棧中元素个数为:"<<i<<endl;
}
void Lstack::clean(void)
{
lnode *q;
if(top==NULL)
{
cout<<"棧原为空!不必清空!"<<endl;
}
while(top!=NULL)
{
q=top;
top=top->next;
delete q;
}
}
int main()
{
char e;
int d;
Lstack L;
Lstack *b=NULL;
while(1)
{
cout<< "\n1.进栈";
cout<<"\n2.退栈";
cout<<"\n3.打印栈";
cout<<"\n4.清空";
cout<<"\n5.计算棧长度";
cout<<"\n0.退出"<<endl;
cout<<"请输入选择:";
cin>>d;
switch(d)
{
case 1:{
cout<<"input :";
cin>>e;
L.push(e);break;
}
case 2:{
L.pop(e);break;
}
case 3:{
L.print();break;
}
case 4:
{
L.clean();break;
}
case 5:
{
L.length();break;
}
case 0:{
return 0;
}
default:{
cout<<"Error!"<<endl;break;
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -