Dotcpp  >  编程教程  >  数据结构  >  什么是队列?队列的应用

什么是队列?队列的应用

点击打开在线编译器,边学边练

什么是队列?

队列中的数据也呈线性排列。虽然与栈有些相似,但队列中添加和删除数据的操作分别是在两端进行的,就和队列这个名字一样,把它想象成排成一队的人更容易理解。在队列中,处理总是从第一名开始往后进行,而新来的人只能排在队尾。


队列是什么?

队列是什么

如上就是队列的概念图,现在队列中只有数据 Blue。往队列中添加数据时,数据被加在最上面。

入队

然后,队列中添加了数据 Green。往队列中添加数据的操作叫作入队。

数据 Red 也入队

紧接着,数据 Red 也入队了。

取出blue

从队列中取出(删除)数据时,是从最下面,也就是最早入队的数据开始的,即 Blue。从队列中删除数据的操作叫作出队。

取出green

如果再进行一次出队操作,取出的就是 Green 了。

像队列这种最先进去的数据最先被取来,即先进先出的结构,我们称为 First In First Out,简称 FIFO。

与栈类似,队列中可以操作数据的位置也有一定的限制。在栈中,数据的添加和删除都在同一端进行,而在队列中则分别是在两端进行的。队列也不能直接访问位于中间的数据,必须通过出队操作将目标数据变成首位后才能访问。

与栈结构不同的是,队列的两端都"开口",要求数据只能从一端进,从另一端出,如图所示:

队列存储结构

通常,称进数据的一端为 "队尾",出数据的一端为 "队头",数据元素进队列的过程称为 "入队",出队列的过程称为 "出队"。


栈和队列区别

栈和队列不要混淆,栈结构是一端封口,特点是"先进后出";而队列的两端全是开口,特点是"先进先出"。

队列存储结构的实现有以下两种方式:

(1)顺序队列:在顺序表的基础上实现的队列结构;

(2)链队列:在链表的基础上实现的队列结构;

两者的区别仅是顺序表和链表的区别,即在实际的物理空间中,数据集中存储的队列是顺序队列,分散存储的队列是链队列。


队列的实际应用

在我们的实际生活中,队列的应用随处可见,比如排队买票电影票、在医院的挂号系统等,采用的都是队列的结构。

拿排队买票来说,所有的人排成一队,先到者排的就靠前,后到者只能从队尾排队等待,队中的每个人都必须等到自己前面的所有人全部买票成功并从队头出队后,才轮到自己买票。这就不是典型的队列结构吗?

这么一说,大家对于队列是不是有个清晰地认识呢?



知识点标签:队列 数据结构


本文固定URL:https://www.dotcpp.com/course/1037

上一课:

数据结构的特点

算法竞赛教程
第一章 算法基础
第二章 搜索算法
第三章 排序算法
第四章 字符串相关
第五章 数学相关
第六章 动态规划
第七章 数据结构
第八章 图论
第九章 计算几何
第十章 其他算法
Dotcpp在线编译      (登录可减少运行等待时间)