队列是什么

小白 QA 2020-04-25 10:17:54 阅读(...)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

队列是什么

简介

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。

队列的数组实现

队列可以用数组 Q[1…m]来存储,数组的上界 m 即是队列所容许的最大容量。在队列的运算中需设两个指针:head,队头指针,指向实际队头元素;tail,队尾指针,指向实际队尾元素的下一个位置。一般情况下,两个指针的初值设为 0,这时队列为空,没有元素。数组定义 Q[1…10]。Q(i) i=3,4,5,6,7,8。头指针 head=2,尾指针 tail=8。队列中拥有的元素个数为:L=tail-head。现要让排头的元素出队,则需将头指针加 1。即 head=head+1 这时头指针向上移动一个位置,指向 Q(3),表示 Q(3)已出队。如果想让一个新元素入队,则需尾指针向上移动一个位置。即 tail=tail+1 这时 Q(9)入队。当队尾已经处理在最上面时,即 tail=10,如果还要执行入队操作,则要发生”上溢”,但实际上队列中还有三个空位置,所以这种溢出称为”假溢出”。

克服假溢出的方法有两种。一种是将队列中的所有元素均向低地址区移动,显然这种方法是很浪费时间的;另一种方法是将数组存储区看成是一个首尾相接的环形区域。当存放到 n 地址后,下一个地址就”翻转”为 1。在结构上采用这种技巧来存储的队列称为循环队列。

队列和栈一样只允许在断点处插入和删除元素。

循环队的入队算法如下:

1、tail=tail+1;

2、若 tail=n+1,则 tail=1;

3、若 head=tail,即尾指针与头指针重合了,表示元素已装满队列,则作上溢出错处理;

4、否则,Q(tail)=X,结束(X 为新入出元素)。

队列和栈一样,有着非常广泛的应用。

注意:(1)有时候队列中还会设置表头结点,就是在队头的前面还有一个结点,这个结点的数据域为空,但是指针域指向队头元素。

(2)另外,上面的计算还可以利用下面给出的公式 cq.rear=(cq.front+1)/max;

当有表头结点时,公式变为 cq.rear=(cq.front+1)/(max+1)。

队列的链表实现

在队列的形成过程中,可以利用线性链表的原理,来生成一个队列。

基于链表的队列,要动态创建和删除节点,效率较低,但是可以动态增长。

队列采用的 FIFO(first in first out),新元素(等待进入队列的元素)总是被插入到链表的尾部,而读取的时候总是从链表的头部开始读取。每次读取一个元素,释放一个元素。所谓的动态创建,动态释放。因而也不存在溢出等问题。由于链表由结构体间接而成,遍历也方便。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • 打印机 printer

    为什么打印机总是显示脱机状态

    打印机总是显示脱机状态一般是连接出了问题;网络打印机可能是没有联网;打印机更改了设置;还有可能是不是打印组件不好,更换组件;打印后台服务程序处理失败而未能够打印任务会导致打印队列堵塞;驱动异常可以关闭所有打印机任务重启打印机。
  • 达芬奇视频调色软件 DaVinci Resolve

    DaVinci Resolve是什么

    DaVinci Resolve(达芬奇)是一款在同一个软件工具中将剪辑、调色、视觉特效、动态图形和音频后期制作融于一身的视频调色软件。它采用美观新颖的界面设计,易学易用,能让新手用户快速上手操作,还能提供专业人士需要的强大性能。
  • 服务器 The server

    服务器有哪些种类

    服务器种类有塔式服务器,具有非常好的可扩展性;网页服务器,在互联网上存储各种网站方面的服务器;文件服务器,在计算机网络中以文件数据的保存和共享为主要功能的服务器;刀片服务器,最节省空间;FTP服务器,在因特网上提供访问服务和文件存储的。
  • Vue 框架 Vue framework

    Vue框架的优点是什么

    vue框架的优点是简单易学;灵活高效;双向数据绑定,通过MVVM思想实现数据的双向绑定,让数据操作更简单;组件化开发,Vue.js通过组件,把一个单页应用中的各种模块拆分到单独的组件中,实现了html的封装和重用;极大解放DOM。操作。
  • 中国计算机学会 CCF

    CCF认证是什么

    CCF是中国计算机学会,CCF认证是CCF计算机职业资格认证系列中的一项能力认证,CCF认证考试时间一般为每年的3、9、12月,由中国计算机学会统一命题、统一评测,委托各地设立的考试机构进行认证考试。
  • 消息队列遥测传输协议 MQTT

    MQTT是什么协议

    MQTT(消息队列遥测传输协议)是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅模式的"轻量级"通讯协议,MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的。