代码编织梦想

一.队列(Queue)

队列是一种用来存储数据的数据结构 , 与链表和栈类似 , 数据到达的次序是队列的关键 , 类似于生活中我们在排队购买东西时 , 第一个人是队首 , 最后一个人是队尾 , 第一个人先买到东西后离开 , 这个时候第二个人便成了队首 , 以此类推…

队列中第一个插入的元素也是第一个被删除的元素 , 所以队列是一种先进先出(First In First Out 简称 FIFO)或者后进后出(Last In Last Out 简称 LILO)的线性表

队列是一种只能在一端(队尾)插入 , 另一端(队首)删除的有序线性表 , 在队列中插入一个元素被称为入队(EnQueqe) , 在队列删除一个元素被称为出队(DeQueuq) , 试图对一个空队列执行出栈操作 , 被称为下溢(underflow) , 试图对一个满队列执行入队操作 , 被称为溢出(overflow)

图片

1.队列的实现方式

  • 基于简单循环数组实现

  • 基于动态循环数组实现

  • 基于链表的方式实现

1.1 基于简单循环数组实现

图片

通常将尾指针rear指向当前队尾元素的真正位置 , 而头指针front指向当前队头元素的前一个位置(不让队头指针 , 队尾指针指向真正的元素是为了运算的时候方便 , 并不是唯一的方法) , 刚开始时 , 队列的头 , 尾指针都为-1 , 后面在出队或者入队时 , 头指针和尾指针值递增变化 , 如上图所示

如果队列为空的时候进行出队操作 , 那么此时将产生下溢现象 , 相反 , 如果队列满时做入队操作将会出现上溢现象

出栈和出队并不是真正的删除元素 , 只是不起作用

时间复杂度

  • 入栈操作EnQueue时间复杂度为O(1)

  • 出栈操作DeQueue时间复杂度为O(1)

局限性

用于实现队列的数组的最大空间必须预先声明且不能改变。试图对一个满队列执行入队操作会产生一个针对简单数组这种特定实现队列方式的异常。

1.2 基于动态循环数组实现

基于动态循环数组实现就是在每次队满的时候进行动态的扩容即可 , 原理同栈一样

栈数据结构飞机票 : 线性数据结构之栈(Stack)

时间复杂度

  • 入队操作EnQueue时间复杂度考虑扩容的情况下为O(N) , 否则为O(1)

  • 出队操作DeQueue时间复杂度为O(1)

1.3 基于链表的实现方式

实现队列的另一种方法是使用链表。通过在链表末端插入元素的方法实现入队(EnQueue)操作。通过删除链表表头元素的方法实现出队操作(DeQueue)。

图片

时间复杂度

  • 入队操作EnQueue时间复杂度平均为O(1)

  • 出队操作DeQueue时间复杂度为O(1)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45001002/article/details/126714463

基础数据结构:队列queue_修电缆的建筑工的博客-爱代码爱编程

        队列(queue)在c++中是一种线性的基础数据结构,它的操作受算法的限制.队列就好比生活当中的排队,不考虑插队的情况下你总是先进入队列的先离开,后进入队列的就后离开.所以队列每次只能取队首的值,每次只能从队尾加入数据.         关于队列的基本操作: 1.入队(push); 2.出队(pop); 3.判断队列是否为空(empty

数据结构(四)——线性结构之队列queue_田小江爱分享的博客-爱代码爱编程

1.队列 队列是先进先出的线性表。只允许在表的一端进行插入操作,而在另一端进行删除操作。 进行插入的一端称为队尾,进行删除操作的一端称为队头。 在具体应用中通常用链表或者数组来实现。 2.从数据存储结构来划分,队列可以分为两类: 顺序栈结构:即使用一组地址连续的内存单元依次保存队列中的数据。在程序中,可以定义一个指定大小的结构数组来作为队列。

数据结构:线性结构之队列-爱代码爱编程

世上有两种最耀眼的光芒,一种是太阳,一种是我们努力的模样。 什么是队列? 在日常生活中队列很常见,像我们经常排队购物或购票,排队是体现了“先来先服务”的原则。 队列在计算机系统中的应用也非常广 泛。例如: 操作系统中的作业排队。在多道程序运行的计算机系统中,可以同时有多个作业运行,它们的运算结果都需要通过通道输出,若通道尚未完成输出,则后来的作业应排

数据结构-线性结构-队列-爱代码爱编程

数据结构-线性结构-队列常用函数实现 #include<stdio.h> #include<stdlib.h> #include<stdbool.h> //Queue的链表实现及常用操作 //链表带头结点 #define Elemtype int struct Queue{ Elemtype val;

数据结构与算法(python) 线性结构:队列Queue-爱代码爱编程

参考自 MOOC数据结构与算法Python版 目录 一、什么是队列Queue二、抽象数据类型Queue2.1 Queue的基本操作2.2 Python实现ADT Queue三、队列的应用3.1 约瑟夫问题 一、什么是队列Queue 队列是一种有次序的数据集合,其特征是: – 新数据项的添加总发生在一端("尾rear"端) – 而现存数据项的一处

数据结构之队列的线性存储结构(C语言)-爱代码爱编程

代码如下: #include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<stdbool.h> #define MAXSIZE 10 typedef int ElemType; typedef struct { ElemType *

常用数据结构之Queue(队列)-爱代码爱编程

1.定义         接着上一篇常用数据结构之栈,我们趁热打铁,今天来聊一聊队列。我们都知道栈是一种有限制的线性表,只能从顶部入顶部出,即后进先出。队列是一种和栈非常相似的数据结构,也是一种有限制的线性表。其限制条件是FIFO(先进先出),就好像我们平时排队一样,新来的人需要排在队尾,排在最前面的人最先上车。                 2.

数据结构-队列(Queue)-爱代码爱编程

队列(Queue)   队列的基本概念   定义   队列(Queue)。队列简称队。是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队;删除元素称为出队或离队。其操作特性为先进先出(First In First Out,FIFO),并且只允许在队尾进,队头出。   队头(Front):允许

数据结构之线性结构(队列)-爱代码爱编程

本文为数据结构之线性结构(队列),根据网课而整合的笔记。 什么是队列 队列(Queue):具有一定操作约束的线性表 插入和删除操作:只能在一端插入,而在另一端删除。 数据插入:入队列(AddQ)数据删除:出队列(DeleteQ)先来先服务先进先出:FIFO队列的抽象数据类型描述 类型名称:队列(Queue) 数据对象集:一个有0个或多

数据结构:栈和队列(Stack & Queue)【详解】-爱代码爱编程

友情链接:数据结构专栏 目录 栈和队列【知识框架】栈一、栈的基本概念1、栈的定义2、栈的常见基本操作二、栈的顺序存储结构1、栈的顺序存储2、顺序栈的基本算法(1)初始化(2)判栈空(3)进栈(4)出栈(5)读栈顶元素3、共享栈(两栈共享空间)(1)共享栈概念(2)共享栈的空间结构(3)共享栈进栈(4)共享栈出栈三、栈的链式存储结构1、链栈2、链栈的基

数据结构之队列、双端队列-爱代码爱编程

数据结构之队列、双端队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出的(First in First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是 那么a1就是队头元素,而an就是队尾元素。这样我们就可以删除时,总是从a

数据结构学习笔记(三):队列(queue)-爱代码爱编程

目录 1 队列的结构形式与操作原则 2 两种顺序队列及其代码实现(Java) 2.1 简单队列 2.1.1 增删查操作的实现 2.1.2 简单队列存在的弊端 2.2 循环队列 3 链式队列及其代码实现(Java) 3.1 链式队列的设计思路 3.2 增删查操作的实现 1 队列的结构形式与操作原则 队列是在两端分别进行增删操作的线性表。

线性结构--队列Queue(python)-爱代码爱编程

文章目录 1. 队列抽象数据类型及Python实现2. 队列的应用:热土豆 1. 队列抽象数据类型及Python实现 队列 先入先出生活中的队列 当人排队时,首先出现在队尾,随着队首人的离去,他逐渐接近队首抽象数据类型Queue Queue具有FIFO的操作次序 Queue():创建一个空队列对象,返回值为 Queue对象;enque

数据结构与算法——5. 线性结构之队列(Queue)与双端队列(Deque)-爱代码爱编程

文章目录 一、队列(Queue)1. 队列的定义2. 队列的特性3. 使用python实现队列二、队列的应用:打印任务1. 实例2. 抽象建模3. python代码实现三、双端队列(Deque)1. 双端队列的定义2 .使用Python实现双端队列四、双端队列的应用:“回文词”判定1. “回文词”的概念2. “ 回文词”的判定方法3. python

数据结构之队列-爱代码爱编程

什么是队列 队列(queue)是一种线性数据结构。与同为线性数据结构的栈不同的是队列中的元素遵循的是先进先出(First In First Out)的规则,和在现实中排队一样,讲究的是先来后到的原则。队列出口端叫做队头(front),队列的入口端叫做队尾(rear)。 与栈类似,队列这种线性数据结构既可以用数组来实现,也可以用链表来实现。用数组来实现时

【Java---数据结构】队列-爱代码爱编程

目录 一、队列 🧊队列的概念 🧊队列的术语 二、普通队列(Queue) 🧊队列的方法 🧊方法的使用 🧊模拟实现普通队列 三、循环队列 🧊循环队列的介绍 🧊数组下标循环技巧 🧊循环队列图 🧊如何区分循环队列是满还是空 🧊模拟实现循环队列 🚀LeetCode -- 设计循环队列 四、双端队列(Deque) 🧊双端队列的介绍 🧊

数据结构之循环队列-爱代码爱编程

目录 一、循环队列的概念 二、设计循环队列 思路一:数组实现  思路二:链表实现 一、循环队列的概念 为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环

数据结构基本概念_及队列queue_queue是属于线性数据结构,还是非线性数据结构-爱代码爱编程

数据结构基本概念 数据结构: 是相互之间存在一种或多种特定关系的数据元素的集合 数据结构的三个层次: 抽象层-逻辑结构、结构层-物理结构、实现层-运算结构 数据结构三要素: 逻辑结构、物