双端队列

来源:互联网 发布:好看的棒球服淘宝店 编辑:程序博客网 时间:2024/06/09 03:16

4:双端队列

总时间限制: 
1000ms 
内存限制: 
65535kB
描述

定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也可以从队尾。编程实现这个数据结构。

输入
第一行输入一个整数t,代表测试数据的组数。

每组数据的第一行输入一个整数n,表示操作的次数。

接着输入n行,每行对应一个操作,首先输入一个整数type。

当type=1,进队操作,接着输入一个整数x,表示进入队列的元素。

当type=2,出队操作,接着输入一个整数c,c=0代表从队头出队,c=1代表从队尾出队。

n <= 1000
输出
对于每组测试数据,输出执行完所有的操作后队列中剩余的元素,元素之间用空格隔开,按队头到队尾的顺序输出,占一行。如果队列中已经没有任何的元素,输出NULL。
样例输入
251 21 31 42 02 161 11 21 32 02 12 0
样例输出
3NULL

#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<iomanip>#include<queue>#include<stack>#include<vector>#include<set>#include<map>using namespace std;int n,t,type,c;int a[1005]={0};int Top=0,Back=0;int main(){cin>>t;while(t--) {Top=0;Back=0;cin>>n;while(n--){cin>>type>>c;if(type==1){a[Back++]=c; }else{if(c==0){Top++;}else{Back--;}}}if(Top==Back){cout<<"NULL"<<endl;}else{for(int i=Top;i<Back;++i){cout<<a[i]<<" ";}cout<<endl; }}return 0;}


原创粉丝点击