队列详细讲解

队列是一种先进先出的线性表,它只允许在表的一段进行插入元素,在表的另一端删除元素,先进先出,插入的一端叫做队尾(back),删除的一段叫做对头(front)

队列定义在<queun>头文件中

下面代码是队列成员的函数原型:

//-----容量capacity-----
bool empty();//测试是否为空队列
size_type size();//返回队列长度//-----元素存取element access----
front();//返回对头元素
back();//返回队尾元素//----队列运算----
void push(const T& x);//插入一个元素到队尾
void pop();//删除队列下一个元素

队列应用举例:

先看代码:

#include<iostream>
#include<queue>
using namespace std;    //队列定义在命名空间
int main()
{queue<int> Q;for (int i = 1; i <= 6; i++) Q.push(i);    //队列Q:1 2 3 4 5 6 Q.front() -= Q.back();//Q:-5 1 2 3 4 5while (!Q.empty()) {cout << Q.front() << " ";Q.pop();   //出队}return 0;
}

用队列的方法来解决实际问题:

例题:桌上有一叠牌,从第一张牌 开始从上往下依次编号1~n。当至少还剩两张牌时进行如下的操作:

把第一张牌扔掉,然后把新的第一张牌放到整碟牌的最后。输入总牌数,输出每次扔掉的牌,以及最后剩下的两张牌

例如:总牌数为7

输入:7

输出:1 3 5 7 4 2 6

1 2 3 4 5 6 7

3 4 5 6 7 2

5 6 7 2 4

7 2 4 6

4 6 2

2 6

解题代码如下:

#include<iostream>
#include<queue>
using namespace std;
int main()
{queue<int> q;    //声明队列int n;            //输出总的牌数cin >> n;for (int i = 0; i < n; i++)q.push(i + 1);     //将1~7放到队列里面去while (q.size() > 2){cout << q.front() << " ";    //输出队列第一个元素q.pop();                 //将队列第一个元素出队q.push(q.front());          //将现队列第一个元素放入到队尾q.pop();                    //现队列的第一个元素出队}  cout << endl;while (!q.empty()){cout << q.front() << " ";   //输出队列中剩余的元素q.pop();}return 0;
}

队列使用方法详细讲解相关推荐

  1. Require使用方法详细讲解

    Require使用方法详细讲解 文章目录 Require使用方法详细讲解 一.AMD 规范 1,AMD 基本介绍 2,AMD 模块规范 二.RequireJS 介绍 1,什么是 RequireJS 2 ...

  2. Python海龟Turtle的使用画中秋画的方法详细讲解

    最近发现很多博主使用Turtle库进行画作,今天来详细讲解海龟库方法 一.定义: Python的turtle库是一个用于绘制图形的库,它来自 Wally Feurzeig, Seymour Paper ...

  3. String类中方法详细讲解

    学习目标: String类方法详细讲解 学习内容: 1.value属性 了解String类的value属性: private final char value[] ; //String类的不可变特性就 ...

  4. 什么是线程?线程概念及方法详细讲解

    目录 1 多线程 1.1 并发与并⾏ 1.2 线程与进程 1.3 创建线程类 2 多线程详解 2.1 多线程原理 2.2 Thread类 2.3 创建线程⽅式⼆ 2.4 Thread 和 Runnab ...

  5. Android --- PagerAdapter的使用方法详细讲解

    PagerAdapter简介 PagerAdapter是android.support.v4包中的类,它的子类有FragmentPagerAdapter, FragmentStatePagerAdap ...

  6. 泰拉瑞亚修改器服务器能用吗,泰拉瑞亚修改器使用方法详细讲解

    泰拉瑞亚修改器的使用方法一直是小伙伴们所关心的问题,这款游戏走的是像素风,依旧是沙盒内游戏专用的风格,自由度非常的高,而且这款游戏目前在PC端和移动端上都可以使用了,在PC上玩家可以使用修改器,而在移 ...

  7. Java split方法详细讲解

    今天是圣诞节,我是中国人,无视圣诞节. 文章可能有点长,看下来必定有所收获. 没有学过正则表达式的去b站看,一个半小时应该可以看完,要看请点这里 这是必备的前置技能,不懂得话没法真正明白split用法 ...

  8. javascript中常用数组方法详细讲解

    javascript中数组常用方法总结 1.join()方法: Array.join()方法将数组中所以元素都转化为字符串链接在一起,返回最后生成的字符串.也可以指定可选的字符串在生成的字符串中来分隔 ...

  9. 环形队列的输出_循环队列的基本操作详细讲解

    实验学时: 2 实验类型: (设计型) 一.实验目的 1. 理解并掌握队列的逻辑结构和顺序存储结构,了解循环队列的特点: 2. 掌握循环队列中基本操作的相关算法: 3. 编程实现相关算法: 4. 学会 ...

最新文章

  1. 1、初识Server API for JavaScript
  2. python绘制表格界面_python 读取 excel 生成 html 页面
  3. python现在时间 命令,Python 日期格式和时间以及当前时间和时间戳
  4. jitter 如何优化网络_抖音优化该怎么做?
  5. JavaScript——正则表达式
  6. 云图说|初识云数据库GaussDB(for Cassandra)
  7. 【clickhouse】基于ClickHouse的海量数据交互式OLAP分析场景实践
  8. linux下限制ip访问
  9. 正则学习之量词匹配分析
  10. 模拟(堆):USACO Jan11 瓶颈
  11. windows下php mongodb 安装配置使用查询
  12. 打分框手工输入分值的技术要领
  13. linux下如何安装凤凰系统,凤凰系统Phoenix OS U盘版安装制作教程
  14. linux源码编译ipk,OpenWrt-SDK-编译生成ipk软件包
  15. 条件覆盖,路径覆盖,语句覆盖,分支覆盖
  16. linux删除mysql用户_如何删除MySQL用户帐户
  17. ​模拟人生3 Mac版自由性超高的模拟游戏
  18. burpsuite配置
  19. bzoj 1863 [Zjoi2006]trouble 皇帝的烦恼
  20. 定点 浮点 神经网络 量化_神经网络模型量化论文小结

热门文章

  1. 李宏毅《机器学习》Task02 - 回归
  2. iTerm2 菜单设置 焦点跟随鼠标
  3. 一次性搞懂 HTTP、HTTPS、SPDY、HTTP2
  4. 茂名天源石化演练:暴雪机器人、涡喷消防车、黑科技现身
  5. QQ空间爬虫--获取好友信息
  6. CDMA 1X 语音业务流程
  7. jsp写入mysql数据库乱码_JSP写入MySQL数据库中出现乱码问题笔记
  8. Java学习第一周 equals的含义 equals与==区别
  9. Redmi Note 10 pro,红米nate10pro面具成功!
  10. 【干货】汇编修改,优先考虑简短的汇编字节, B0 08 mov al,0x8