顺序栈
#include <iostream>
#include <vector>
using namespace std;
//栈类
template<typename T>
class Stack
{
private:
//vector是动态数组,动态数组用new和delete来管理内存,系统自动完成内存管理
vector<T> vec;
public:
//栈顶:第一个元素的下标,空栈时为-1
int top = -1;
public:
//无参构造
Stack(){}
//拷贝构造函数
Stack(const Stack &s)
{
this->vec=s.vec;
}
//析构函数
~Stack(){}
//判空
bool empty()
{
return this->vec.empty();//空返回true,不空返回false
}
//栈顶插入
void push(T data)
{
this->top++;//栈顶+1
return this->vec.push_back(data);//插入一个元素 data:元素的值
}
//栈顶删除
void pop()
{
//判空
if(this->empty())
{
cout<<"栈空"<<endl;
return;
}
this->top--;//栈顶-1
return this->vec.pop_back();//删除栈顶的一个元素
}
};
int main()
{
Stack <int> s;//显示调用类模板
cout<<"判空:"<<boolalpha<<s.empty()<<endl;//判空
cout<<endl;
int i;//用于遍历
int n;//用于存储输入的值
//遍历插入
for(i=0;i<10;i++)
{
cout<<"请输入第"<<i+1<<"个元素:"<<endl;
cin>>n;
s.push(n);
}
cout<<endl;
cout<<"栈顶:"<<s.top<<endl;
cout<<endl;
//栈顶删除
cout<<"删除栈顶第一个元素"<<endl;
s.pop();
cout<<"栈顶:"<<s.top<<endl;
return 0;
}