1 条题解
-
5
好,这是一道关于
栈队列的题(UP亿不小心做成了栈)心态崩了555~好了,思路是这鸭子的:
队列一般有以下几种操作:
- 新建:可以和栈一样用一维数组
- 加入:队列是不能插队的哦只能排后面用
数组名[++rear]=某个值
- 删除:在这UP要提醒大家计算机里的队列只的是队首删除的哦
++front
提示:
front 代表队首
rear 代表队尾
UP是这样写的:
const int maxn=1000010; int rear=0,front=0,a[maxn]; void add(int x){ //add 中文:添加 a[++rear]=x; for(int j=front;j<=rear;j++){ for(int s=j+1;s<=rear;s++){ if(a[j]<a[s]){ break; } swap(a[j],a[s]); } } } void mis(){ //minus 中文:减 ++front; } //完成了队列的基本操作
加了一个排序(这题本来就是要排序的,猜猜看我用的是哪种排序)
然后是主程序(基本和栈差没多少):
int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ char x[11]; scanf("%d",&x); if(x[0]=='q'){ int k; cin>>k; printf("%d",a[front+k]); }else if(x[1]=='u'){ int k; cin>>k; add(k); }else{ mis(); cout<<a[front]<<endl; } } }
题解+程序是UP好不容易写好的点个赞吧👍
- 1
信息
- ID
- 749
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 10
- 标签
- 递交数
- 20
- 已通过
- 0
- 上传者