数组模拟与STL容器
1.新建⼀个栈
int stk[N], top = -1;//top指向栈顶。基底是0则top=-1,是1则top=0
stackstk;
2.插⼊数据
stk[++ top] = x;//将x插⼊栈
stk.push(x);//将x⼊栈
3.删除栈顶元素
top–;//删去栈顶
stk.top();//删栈顶
4.查询栈顶数据
stk[top];
stk.top();//取栈顶
5.如何清空⼀个栈
5.1 依次判断top是否存在,并删除top。O(n)
5.2 直接将top指针指向基地址。O(1)
6.数组模拟和STL容器的区别:
6.1 STL⾥⾯的stack没有清空函数,只能⼀个⼀个出栈or新建⼀个栈。
6.2 数组模拟的栈可以O(1)取出从栈顶往下数第k个元素(stk[top - k + 1),⽽STL实现的栈不可以。
代码实现
#include<iostream>
#include<stack>
using namespace std;
int main(){
stack<int>s;//定义一个栈
int a,b,l;
cin>>a;
s.push(a);//将元素a压入栈中
b=s.top();//将b赋值为栈顶元素
s.pop();//将此时栈顶元素弹出
l=s.size();//查询栈的元素个数
if(!s.empty()) cout<<"CSDN"<<endl;//判断是否为空栈
return 0;
}