C++栈的基础应用

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_40330033/article/details/80101132