数据结构—队列

作者&投稿:掌妹 (若有异议请与网页底部的电邮联系)
~ 队列 (queue)是一种先进先出的线性表。它只允许在表的一端进行插入,在另一端进行删除,这如同我们日常生活中的排列是一致的,最早入队的元素最早离开。

队尾 (rear)是队列中允许插入的一端, 队头 (front)是队列中允许删除的一端。

队列如同栈一样,也同样有两种存储表示,分别是顺序表示和链式表示。

和顺序栈类似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到对列尾的元素之外,需要设置两个指针front和rear分别指示队列头元素和尾元素的位置。

队列的顺序存储结构表示如下:

为方便C语言描述起见,约定:初始化建空队列时,front=rear=0,每当插入新元素至队尾时,“尾指针增一”,每当删除头元素时,“头指针增一”。因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队尾元素的下一个位置。

循环对列 是将顺序队列变成一个环状的空间,用这种方法可以解决队列“假溢出”问题。

“假溢出” 是指队列实际可用空间没有占满,但是不能向队列中添加新的队尾元素,否则会出现溢出的现象的情况。

在循环队列中,头尾指针以及队列元素之间的关系不发生改变,只是在循环队列中头尾指针“依次循环增一”的操作可用模运算实现。通过取模,头指针和尾指针就可以在顺序表空间内以头尾衔接的方式“循环”移动。

循环队列的基本操作算法描述:

链队是指采用链式存储结构实现的队列。通常链队用单链表来表示,一个链队显然需要两个分别指示对头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。为了操作方便,同线性表的单链表一样,为链队添加头结点,并规定头指针始终指向头结点。

链队列存储结构表示如下:

链队操作即为单链表插入和删除操作的特殊情况,只是需要进一步修改尾指针或头指针。

链队列的基本操作算法描述:

队列是什么类型的数据结构?
答:线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。

数据结构—队列
答:链队是指采用链式存储结构实现的队列。通常链队用单链表来表示,一个链队显然需要两个分别指示对头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。为了操作方便,同线性表的单链表一样,为链队添加头结点,并规定头指针始终指向头结点。链队列存储结构表示如下:链队操作即为单链表插入和删除操作...

数据结构--队列,栈,线性表,树
答:数据结构是指相互之间存在一种或多种 特定关系 的数据元素的 集合 一,队列 特点:先进先出(FIFO: first in first out)比如:排队买票,会有队列头,队列尾,队列头的人先买到票,先离开,队列尾的人后买票,后离开。队列分为:普通队列,环形队列 内存使用上是十分高效的,可以充分用到每个...

数据结构之队列的定义及基本运算
答:队列的定义 队列(Queue)也是一种运算受限的线性表 它只允许在表的一端进行插入 而在另一端进行删除 允许删除的一端称为队头(Front) 允许插入的一端称为队尾(Rear) 队列的修改是按先进先出的原则进行的 因此 队列又称为先进先出(First In First Out)的线性表 简称为FIFO表 队列的基本运...

数据结构之-队列
答:因此通用的计算队列长度公式为:(rear—front + QueueSize) % QueueSize 从上面的图我们不难看出顺序存储存在着数组可能会溢出的问题,所以也就引出了链式存储结构。在链队列中,队头指针指向头结点,队尾指针指向终端结点,一个普通的链队列如下图所示:当队列为空时,front和rear都指向头结点。

数据结构——知识点总结-栈和队列
答:数据结构:栈与队列的深度解析 栈,这个术语源自拉丁文"staurus",意为"矛尖",形象地描绘了其像矛尖一样只允许在一端进出的特点。它是线性数据结构的一种,遵循FILO(First In Last Out,先进后出)原则,如同子弹出膛的顺序。主要有顺序栈和链栈两种实现方式。与之相对的是队列,它遵循的是FIFO...

什么是队列?
答:队列和栈一样,也是一种操作受一定规则限制的数据结构。队列简单理解就是平常生活中的排队。队列在结构上分为队头和队尾,只能在队头执行出队操作,在队尾执行入队操作。队列的这种结构其实就类似于我们现实世界中的排队,队伍只能从前往后排,新来的排在队尾,排在队伍最前面的可以最先出队,队列实际...

单调队列 —— 动图详解高效数据结构
答:探索数据结构艺术:单调队列的高效之旅 单调队列,这个看似简单却蕴含高效策略的数据结构,是算法宝库中一颗璀璨的明珠。它以一端插入、两端删除的独特特性,解决了一系列复杂问题,其中滑动窗口问题尤其受益于它的O(n)时间复杂度。让我们一起通过生动的动图和深入剖析,揭开单调队列的神秘面纱。双端队列的...

数据结构——优先队列
答:普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。在Java中也实现了自己的优先队列 java.util....

数据结构与算法-队列
答:队列只支持两个基本操作:入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。队列跟栈一样,也是一种操作受限的线性表数据结构。队列跟栈一样,也是一种抽象的数据结构。它具有先进先出的特性,支持在队尾插入元素,在队头删除元素。跟栈一样,队列可以用数组来实现,也...