📄 cpp1.cpp
字号:
# include<iostream.h>
/************栈的定义**************/
class DouStack
{
public:
int top1,top2;
int * stacka; //用数组存储栈种元素
public:
DouStack();
~DouStack(){};
void push(int,int Num);
int pop(int Num);
int empty1(void) const {return top1==0;}
int empty2(void) const {return top2==99;}
int full() const {return top1==top2;}
void clear(int Num)
{
if(Num==1) {top1=0;}
else
if(Num==2) {top2=99;}
else cout<<"输入有误,没有此栈!"<<endl;
}
};
/************栈的建立**************/
DouStack::DouStack():top1(0),top2(99)
{
stacka=new int[100];
if(stacka==NULL)
{
cout<<"存储分配失败!"<<endl;
// exit(1);
return;
}
}
/************入栈操作**************/
void DouStack::push(int item,int Num)
{
if(full())
{
cout<<"栈已满,不能入栈!"<<endl;
return;
}
switch(Num) //栈未满,入栈
{
case 1:
{
stacka[top1]=item;
top1++;
return;
}
case 2:
{
stacka[top2]=item;
top2--;
return;
}
default:return;
}
}
/************出栈操作**************/
int DouStack::pop(int Num)
{
switch(Num)
{
case 1:
{
if(empty1())
{
cout<<"栈1已空!"<<endl;
}
top1--;
int data=stacka[top1];
return data;
}
case 2:
{
if(empty2())
{
cout<<"栈2已空!"<<endl;
}
top2++;
int data=stacka[top2];
return data;
}
default:cout<<"没有此栈!";
}
}
/************主函数**************/
void main()
{
DouStack exp;
int n1=0,n2=0;
int a,i;
cout<<"请输入要入栈1的元素的数量(数值小于101):"<<endl;
cin>>n1;
cout<<"请连续输入"<<n1<<"个数入栈1:"<<endl;
if(n1!=0)
{
for(i=0;i<n1;i++)
{
cin>>a;
exp.push(a,1);
}
}
cout<<"请输入要入栈2的元素的数量(数值小于"<<100-n1<<",否则栈满):"<<endl;
cin>>n2;
cout<<"请连续输入"<<n2<<"个数入栈2:"<<endl;
if(n2!=0)
{
for(i=0;i<n2;i++)
{
cin>>a;
exp.push(a,2);
}
}
cout<<"栈1中的元素为(从栈底到栈顶):"<<endl;
for(i=0;i<n1;i++)
{
cout<<exp.stacka[i]<<" ";
}
cout<<endl<<"栈1中元素依次出栈:"<<endl;
for(i=0;i<n1;i++)
{
cout<<exp.pop(1)<<" ";
}
cout<<endl<<"栈2中的元素为(从栈底到栈顶):"<<endl;
for(i=99;i>99-n2;i--)
{
cout<<exp.stacka[i]<<" ";
}
cout<<endl<<"栈2中元素依次出栈:"<<endl;
for(i=0;i<n2;i++)
{
cout<<exp.pop(2)<<" ";
}
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -