AKSZ-栈与队列
2024-05-02 17:13:02
发布于:广东
1.栈
stl(更方便)
#include<bits/stdc++.h>
//#include<stack>
using namespace std;
unsigned long long x,tmp;
string rq;
int t,n;
int main(){
return 0;
}
数组实现
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
//定义栈数组
unsigned long long stk[maxn], data,t,n;
string s;
int top;//栈数据多少
//初始化
void init(){
top=0;
}
void add(unsigned long long x){
stk[++top]=x;//进栈
}
//删除
bool empty(){//表示栈是否为空
return !top;
}
void pop(){
if(empty())
cout<<"Empty"<<endl;
else
top--;//出栈
}
void query(){//查询
if(top)//一定要有元素
cout<< stk[top]<<endl;
else
cout<<"Anguei!"<<endl;
}
void size(){
cout<<top<<endl;
}
int main(){
return 0;
}
2.队列
stl
#include<bits/stdc++.h>
using namespace std;
queue<int> q;
int front,rear,n,rq,x;
void pop(){
if(q.empty())
cout<<"ERR_CANNOT_POP"<<endl;
else
q.pop();
}
void query(){
if(q.empty())
cout<<"ERR_CANNOT_QUERY"<<endl;
else
cout<<q.front()<<endl;
}
void size(){
cout<<q.size()<<endl;
}
int main(){
return 0;
}
数组实现
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int q[maxn],front,rear,n,rq,x;
bool empty(){
return front==rear;
}
void push(int x){
q[++rear]=x;
}
void pop(){
if(empty())
cout<<"ERR_CANNOT_POP"<<endl;
else
front++;
}
void query(){
if(empty())
cout<<"ERR_CANNOT_QUERY"<<endl;
else
cout<<q[front+1]<<endl;
}
void size(){
cout<<rear-front<<endl;
}
int main(){
return 0;
}
3.优先队列(堆)
下面所有操作复杂度o(logn)
#include<bits/stdc++.h>
using namespace std;
priorty_queue<int> q;//大根堆
int main(){
int t=q.top();//取出最大值
q.pop();//删除最大元素
q.push(x);//删掉最大元素
return 0;
}
priority_queue<int , vector<int> , greater<int> >q;//重载小根堆
这里空空如也
有帮助,赞一个