先进先出(First In First Out,FIFO)的线性序列,成为“队列”。

队列也是一种线性表,只不过它是操作受限的线性表,只能在两端操作:

一端进,一端出。进的一端成为队尾(rear),出的一端称为队头(front)。队列可以用顺序存储,也可以用链式存储。

循环队列

#include <iostream>
using namespace std;
#define Maxsize 100typedef  struct SqQueue {int *base; //基地址int front, rear; //头指针,尾指针
}SqQueue;//循环队列的初始化
bool InitQueue(SqQueue &Q)//注意使用引用参数,否则出了函数,其改变无效
{Q.base = new int[Maxsize];//分配空间if (!Q.base) return false;Q.front = Q.rear = 0; //头指针和尾指针置为零,队列为空return true;
}//循环队列的入队
bool EnQueue(SqQueue &Q, int e)//将元素e放入Q的队尾
{if ((Q.rear + 1) % Maxsize == Q.front) //尾指针后移一位等于头指针,表明队满return false;Q.base[Q.rear] = e; //新元素插入队尾Q.rear = (Q.rear + 1) % Maxsize; //队尾指针加1return true;
}//循环队列的出队
bool DeQueue(SqQueue &Q, int &e) //删除Q的队头元素,用e返回其值
{if (Q.front == Q.rear)return false; //队空e = Q.base[Q.front]; //保存队头元素Q.front = (Q.front + 1) % Maxsize; //队头指针加1return true;
}//取循环队列的队头元素
int GetHead(SqQueue Q)//返回Q的队头元素,不修改队头指针
{if (Q.front != Q.rear) //队列非空return Q.base[Q.front];return -1;
}
//循环队列的长度
int QueueLength(SqQueue Q)
{return (Q.rear - Q.front + Maxsize) % Maxsize;
}int main()
{SqQueue Q;int n, x;InitQueue(Q);//初始化队列(一定要初始化,否则后面存储出错)cout << "请输入元素个数n:" << endl;cin >> n;cout << "请依次输入n个整型数,依次入队:" << endl;while (n--){cin >> x;EnQueue(Q, x);//入队}cout << endl;cout << "队列内元素个数,即长度:" << QueueLength(Q) << endl;cout << "队头元素:" << GetHead(Q) << endl;cout << "元素依次出队:" << endl;while (true)//如果栈不空,则依次出栈{if (DeQueue(Q, x))cout << x << "\t";//出队元素elsebreak;}cout << endl;cout << "队列内元素个数,即长度:" << QueueLength(Q) << endl;return 0;
}

单调队列

 //常见模型:找出滑动窗口中的最大值/最小值int hh = 0, tt = -1;for (int i = 0; i < n; i ++ ){while (hh <= tt && check_out(q[hh])) hh ++ ;  // 判断队头是否滑出窗口while (hh <= tt && check(q[tt], i)) tt -- ;q[ ++ tt] = i;}

详解单调队列算法

数据结构【队列专题】相关推荐

  1. java 数据结构_Java版-数据结构-队列(数组队列)

    前言 看过笔者前两篇介绍的 Java版数据结构 数组和 栈的盆友,都给予了笔者一致的好评,在这里笔者感谢大家的认可!!! 由于本章介绍的数据结构是 队列,在队列的实现上会基于前面写的 动态数组来实现, ...

  2. 数据结构——队列的C++实现

    数据结构--队列的C++实现 \qquad队列的创建.判断是否为空或者满.入队和出队操作的C++实现. #include<iostream> using namespace std;//1 ...

  3. java 数据队列_Java 数据结构 - 队列

    Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...

  4. 数据结构队列代码_代码简介:队列数据结构如何工作

    数据结构队列代码 Here are three stories we published this week that are worth your time: 这是我们本周发布的三个值得您关注的故事 ...

  5. java循环队列_Java版-数据结构-队列(循环队列)

    前情回顾 在上一篇,笔者给大家介绍了数组队列,并且在文末提出了数组队列实现上的劣势,以及带来的性能问题(因为数组队列,在出队的时候,我们往往要将数组中的元素往前挪动一个位置,这个动作的时间复杂度O(n ...

  6. 第七周--数据结构--队列数组

     /*    *第七周--数据结构--队列数组     *Copyright (c) 2015 烟台大学计算机与控制工程学院    *All right reserved.    *文件名称:li ...

  7. 数据结构-队列和栈有什么区别

    数据结构-队列和栈有什么区别 1:队列和栈是两种不同的数据结构.它们有以下区别: (1)操作的名称不同.队列的插入称为入队,队列的删除称为出队.栈的插入称为进栈,栈的删除称为出栈. (2)可操作的方式 ...

  8. 数据结构——队列的C语言代码实现

    系列文章目录 数据结构--顺序表的C语言代码实现 数据结构--八种链表的C语言代码实现 数据结构--栈的C语言代码实现 数据结构--队列的C语言代码实现 数据结构--堆的C语言代码实现 文章目录 系列 ...

  9. 数据结构——队列 c++详解

    1.队列(Queue)与栈一样,是一种线性存储结构,它具有如下特点: (1)队列中的数据元素遵循"先进先出"(First In First Out)的原则,简称FIFO结构: (2 ...

  10. C++数据结构——队列

                                                      C++数据结构--队列 参考博客: 数据结构图文解析之:队列详解与C++模板实现 C++ stl队列 ...

最新文章

  1. 推荐:梁宏达与体育评书
  2. python程序员搞笑段子_程序员才能看得懂的段子,内含表情包,吃饭的时候别点!...
  3. GitGitHub语法大全
  4. 计算机网络 实验教案,《计算机网络》实验教案.pdf
  5. 全国计算机英语四六级准考证打印准考证号,2017全国大学生英语四六级准考证打印...
  6. opencv_图像反转
  7. 8. memached安全性
  8. 第三季-第8课-系统调用方式文件编程
  9. 可变数据(VDP)软件 数码印刷和传统印刷的区别
  10. 不等式计算机在线使用,不等式传递性在线计算器
  11. 都2020年了,别再迷信啤酒与尿布!数据分析的真相在这
  12. 一个域名引发的血案……
  13. 做计算机的小卫士教案,小学信息技术教案四年级上环保小卫士
  14. [附源码]Java计算机毕业设计SSM大学生健康管理系统的设计与实现
  15. LOAM算法(论文+代码)详解(一)—— 引言+特征提取
  16. 爬虫ua设置及ip代理
  17. 每天一个小技巧———idea恢复误删文件
  18. 交互设计:界面尺寸设计大全
  19. shell win10 改成cmd_Win10 的 PowerShell、CMD 和 Windows Terminal 全方位美化配置方法
  20. 工贸企业重大事故隐患判定标准,自2023年5月15日起施行

热门文章

  1. cxf添加拦截器_在CXF API和拦截器中添加Gzip压缩
  2. jsf 自定义属性_如何在JSF中实现自定义密码强度指示器
  3. maven的中央存储库_部署到Maven中央存储库
  4. 吸气剂和二传手被认为有害
  5. 使用DynamoDB映射器将DynamoDB项目映射到对象
  6. 如何将自定义数据源集成到Apache Spark中
  7. 在分析了47,251个依赖关系之后,2016年排名前100的Java库
  8. 60秒内使用Java 9的Project Jigsaw的JavaFX HelloWorld
  9. 通过此注释改善您的JUnit体验
  10. Spring Security配置错误