C++栈的初始化,创建,删除,计算栈的长度
#include<iostream>
#include<stdlib.h>
using namespace std;
#define MAXSIZE 25
template<class DataType>
class SeqStack
{
private:
int top;
DataType* test;
int maxsize;
public:
SeqStack():top(-1),maxsize(MAXSIZE)
{
test=new DataType[maxsize];
if(test==NULL)
{
cout<<"error!"<<endl;
}
}
~SeqStack()
{
delete[] test;
}
bool Empty();
void Push(DataType x);
DataType Top();
void Pop();
int Size();
void Show();
};
template<class DataType>
bool SeqStack<DataType>::Empty()
{
if(top==-1)
{
return true;
}
else{
return false;
}
}
template<class DataType>
DataType SeqStack<DataType>::Top()
{
if(top!=-1)
{
return test[top];
}
else
{
cout<<"栈空\n";
}
}
template<class DataType>
void SeqStack<DataType>::Push(DataType x)
{
if(top+1<maxsize)
{
test[++top]=x;
}
else
{
cout<<"栈满\n";
exit(1);
}
}
template<class DataType>
void SeqStack<DataType>::Pop()
{
if(top>=0)
{
top--;
}
else
{
cout<<"栈空\n";
exit(1);
}
}
template<class DataType>
int SeqStack<DataType>::Size()
{
return top+1;
}
template<class DataType>
void SeqStack<DataType>::Show()
{
int tempTop = top;
if(top==-1)
{
cout<<"此栈为空\n";
}
while(top!=-1)
{
cout<<test[top]<<" ";
top--;
}
top = tempTop;
}
int main()
{
SeqStack<int> demo;
cout<<"初始化栈:\n";
for(int i=0;i<20;i++){
demo.Push(i);
}
cout<<"初始化栈完成:\n";
int oper=-1;
while(true){
cout<<"请选择您要进行的操作:\n1:添加一个元素\n2:移除一个元素\n3:栈的长度\n4:删除全部元素\n5:查看全部元素\n0:退出\n";
cout<<"--------------------------------------------------\n";
cin>>oper;
if(oper==0)
{
break;
}else if(oper==1)
{
int add=-1;
cout<<"请输入要添加的元素:\n";
cin>>add;
demo.Push(add);
cout<<"--------------------------------------------------\n";
}else if(oper==2)
{
cout<<"移除的元素为:"<<demo.Top()<<"\n";
demo.Pop();
cout<<"--------------------------------------------------\n";
}else if(oper==3)
{
cout<<"栈的长度为:"<<demo.Size()<<endl;
cout<<"--------------------------------------------------\n";
}else if(oper==4)
{
while(!demo.Empty())
{
demo.Pop();
}
cout<<"删除操作完成\n";
cout<<"--------------------------------------------------\n";
}else if(oper==5)
{
demo.Show();
}
}
return 0;
}