AKSZ-栈和队列
2024-05-02 17:14:51
发布于:广东
栈和队列
栈
详见
[题目](https://www.luogu.com.cn/problem/B3614)
include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
unsigned long long stk[maxn],top;
void init(){
top=0;
}
void push(unsigned long long x){//增栈
stk[++top]=x;
}
void pop(){//出栈
top--;
}
int sizes(){
return top;
}
bool size(){//表示栈是否为空
return !top;
}
int query(){//
if(!top)cout<<"Anguei!"<<endl;//一定要有元素
return stk[top];
}
unsigned long long t,n,o;
string x;
int main(){
init();
cin>>t;
for(int i=1;i<=t;i++){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
if(x=="push"){
cin>>o;
push(o);
}
if(x=="pop"){
if(!size())pop();
else cout<<"Empty"<<endl;
}
if(x=="query"){
if(size())query();
else cout<<stk[top]<<endl;
}
if(x=="size"){
cout<<sizes();
cout<<endl;
}
}
}
return 0;
}
STL
标准模板库
stl -> 栈 stack< int >
1.定义 stack< int > stk 栈名
2.入栈 stx.push(变量名)
3.出栈 stk.pop();
4.栈空 stk.empty()
5.栈顶 stk.top()
6.栈大小 stk.size()
队列
int q[maxn]
1.front rear=0;
2.q[rear]
3.front
4.cout<<rear-front
5.当 front rear 相等时记得判空
STL
1.queue< int >q
2while(!q.empty())q.pop()
3.q.pop
4.int t=q.front()
5.q.size()
6.q.empty()
优先队列
priority_queue<int>q;//大根堆
//定义一个优先队列
int t=q.top();//取出一个元素,最大值O(Logn)
q.pop();//删掉最大元素
q.push(x);//放入一个元素
q.empty();q.size();
//取出最小值
priority_queue<int,vector<int>,greater<int> > q;
这里空空如也
有帮助,赞一个