栈是一种特殊的线性表,它只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出(Last in First out)的原则。
C++的库函数中也提供了堆栈(stack)的基本操作。
#include<iostream>
#include<stack>
stack<int> s;
int num;
s.empty(); //堆栈为空则返回真
s.pop(); //移除栈顶元素
s.push(num); //在栈顶增加元素
s.size(); //返回栈中元素数目
s.top(); //返回栈顶元素
stack本意有堆叠的意思,和它后进先出的原则十分相似。一个堆栈像叠放在一起的盘子一样,只能取最上面的。而最先放进去的盘子只能到最后才能取出来。
用例:https://vjudge.net/problem/51Nod-3199
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> q;
int n,op,x;
cin>>n;
while(n--)
{
cin>>op;
if(op==1)
{
cin>>x;
q.push(x);
}
else if(op==2)
{
if(q.empty())
cout<<"empty"<<endl;
else
{
cout<<q.top()<<endl;
q.pop();
}
}
}
return 0;
}