刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

4.双端队列
定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也可以从队尾。编程实现这个数据结构。
时间限制:1000
内存限制:65535
输入
第一行输入一个整数t,代表测试数据的组数。 每组数据的第一行输入一个整数n,表示操作的次数。 接着输入n行,每行对应一个操作,首先输入一个整数type。 当type=1,进队操作,接着输入一个整数x,表示进入队列的元素。 当type=2,出队操作,接着输入一个整数c,c=0代表从队头出队,c=1代表从队尾出队。 n <= 1000
输出
对于每组测试数据,输出执行完所有的操作后队列中剩余的元素,元素之间用空格隔开,按队头到队尾的顺序输出,占一行。如果队列中已经没有任何的元素,输出NULL。
样例输入
2
5
1 2
1 3
1 4
2 0
2 1
6
1 1
1 2
1 3
2 0
2 1
2 0
样例输出
3
NULL

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

【喵呜刷题小喵解析】本题要求实现一个双端队列,其进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也可以从队尾。首先,我们定义一个双端队列类Deque,包含两个方法:push和pop。push方法用于将元素添加到队尾,pop方法用于从队头或队尾弹出元素。在solve函数中,我们首先读取测试数据的组数t,然后对于每组数据,读取操作次数n,并创建一个空的双端队列dq。对于每个操作,我们读取操作类型和元素x。如果操作类型为1,表示进队操作,我们调用dq.push(x)将元素x添加到队尾。如果操作类型为2,表示出队操作,我们调用dq.pop(x)从队头或队尾弹出元素,并将结果打印出来。如果弹出的元素为空,我们打印'NULL'。如果操作类型不是1或2,我们打印'Invalid operation'。最后,如果当前操作是从队尾出队操作,我们打印一个换行符,以区分每组测试数据。这样,我们就实现了双端队列的编程实现,满足题目的要求。
创作类型:
原创

本文链接:4.双端队列 定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也可以

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share