双端队列deque(C++)

这篇具有很好参考价值的文章主要介绍了双端队列deque(C++)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

栗酱有一天在网上冲浪的时候发现了一道很有意思的数据结构题。

该数据结构形如长条形。

一开始该容器为空,有以下七种操作。

1 a从前面插入元素a

2 从前面删除一个元素

3 a从后面插入一个元素

4 从后面删除一个元素

5 将整个容器头尾翻转

6 输出个数和所有元素

7 对所有元素进行从小到大排序

输入描述:

只有一组数据,第一行n≤50000,m≤200000, a≤100000 代表最大数据数目和操作次数。
接下来每一行一个操作如上描述。保证所有操作合法(不会在容器为空时删除元素)。
6、7操作共计不会超过10次。

输出描述:

当执行6操作时,第一行先输出当前的个数,然后从头到尾按顺序输出,每两个元素之间用一个空格隔开,末尾不能有空格。

示例1文章来源地址https://www.toymoban.com/news/detail-511254.html

输入

10 9
1 1
3 5
3 4
6
4
5
6
7
6

输出

3
1 5 4
2
5 1
2
1 5
#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
deque<int> a;
deque<int> b;
int n, m;
int main()
{
	cin >> n >> m;
	while (m--)
	{
		int t;
		cin >> t;
		if (t == 1)
		{
			int x;
			cin >> x;
			a.push_front(x);//头插
		}
		if (t == 2)
		{
			a.pop_front();//头删
		}
		if (t == 3)
		{
			int x;
			cin >> x;
			a.push_back(x);//尾插
		}
		if (t == 4)
		{
			a.pop_back();//尾删
		}
		if (t == 5)
		{
			reverse(a.begin(), a.end());//头尾颠倒
		}
		if (t == 6)
		{
			cout << a.size() << endl;//个数
			for (int i = 0; i < a.size(); i++)
			{
				cout << a[i] << " ";
			}
			cout << endl;
		}
		if (t == 7)
		{
			sort(a.begin(), a.end());//排序
		}
	}
}

到了这里,关于双端队列deque(C++)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】STL之适配器---用deque实现栈和队列

    目录 前言 一、deque  1、deque 的原理介绍  2、deque 的底层结构  3、deque 的迭代器  4、deque 的优缺点   4.1、优点   4.2、缺点 二、stack 的介绍和使用  1、stack 的介绍  2、stack 的使用  3、stack 的模拟实现 三、queue 的介绍和使用  1、queue 的介绍   2、queue 的使用  3、queue 的模

    2024年02月07日
    浏览(41)
  • [C++] STL_priority_queue(优先级队列) 的使用及底层的模拟实现,容器适配器,deque的原理介绍

    priority_queue文档介绍 翻译: 1. 优先队列是一种 容器适配器 ,根据严格的弱排序标准, 它的第一个元素总是它所包含的元素中最大的。 2. 此上下文类似于 堆 , 在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。 3. 优先队列被实现为容器适配

    2024年02月04日
    浏览(35)
  • 数据结构--队列2--双端队列--java双端队列

    双端队列,和前面学的队列和栈的区别在于双端队列2端都可以进行增删,其他2个都是只能一端可以增/删。 因为2端都需要可以操作所以我们使用双向链表 我们也需要一共头节点 所以节点设置 队列的类维护: 容量 队列元素个数 哨兵 哨兵初始头和尾都指向自己,value为null

    2024年02月10日
    浏览(32)
  • 秒懂百科,C++如此简单丨第二十一天:栈和队列

    目录 前言 Everyday English 栈(Stack) 图文解释 实现添加删除元素 实现查看清空栈 完整代码 运行示例 栈的选择题 队列(Queue) 图文解释 队列的基本用法 完整代码  运行结果  队列的好处  结尾  今天我们将学习两个新的数据结构——栈和队列。 A friend in need is a friend indeed

    2024年02月20日
    浏览(29)
  • 或许有一天,你不得不硬着头皮去优化FPGA

        上篇(为啥FPGA资源/时序都有很大的优化空间?)提到过:因为大家一直都没去怎么优化FPGA,然后就导致FPGA可以优化的空间很大。工作中会有一批人知道可以优化但很少去承担优化的工作,也有一批人不知道能怎么优化,还有一批人开始要硬着头皮开始优化FPGA了,那这

    2024年04月23日
    浏览(30)
  • 【数据结构-队列】双端队列

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月09日
    浏览(31)
  • 网站一天要是能有一万自然ip流量能有多少钱

    网站一天要是能有一万自然ip流量,能有多少钱?大家都说至少有100元,可是放广告点击率那么低,不可能到100的吖,谁懂啊,帮我解释下呗。不值百度联盟和谷歌联盟的广告点击率, 如果一个网站的日访问量为1万,那么其收入可能会达到330元。 但是,这需要考虑到该网站

    2024年02月20日
    浏览(28)
  • 数据结构--双端队列

    双端队列(Double-ended Queue,简称Deque)是一种具有队列和栈特性的数据结构,可以在队列的两端进行插入和删除操作。双端队列允许从前端和后端同时进行插入和删除操作,因此可以称为“两端都可以进出的队列”。 双端队列的特点包括: 可以在队列的头部和尾部进行插入和

    2024年02月08日
    浏览(35)
  • 49天精通Java,第27天,队列、双端队列、优先队列

    大家好,我是哪吒。 双端队列是一种特殊的队列,它的两端都可以进行插入和删除操作。这种队列的实现方式是使用两个指针,一个指针指向队列的头部,另一个指针指向队列的尾部。当需要插入或删除元素时,只需要移动指针即可。

    2024年02月03日
    浏览(31)
  • 【数据结构】队列的使用|模拟实现|循环队列|双端队列|面试题

    1.1 概念 队列 :只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为 队尾(Tail/Rear) 出队列:进行删除操作的一端称为 队头(Head/Front) 队列和栈的区别: 队列是 先进先出(队

    2024年02月03日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包