在什么情况下,最好使用队列而不是常规链表?如果列表是单链接或双链接的,则无关紧要。
线性列表是 n 个节点的序列(可能为零节点),其中列表的基本结构属性是项目在线条中显示时的相对位置。哪也就是说,对于任何给定的节点,我们只关心它的两个相邻的邻居,即前面和后面的节点。
我们可能希望能够执行以下操作,
- 检查列表的第 k 个节点
- 更改存储在第 k 个节点的值 在第
- k 个节点之前或之后插入一个新节点 将
- 两个列表合并为一个列表
- 将列表拆分为两个或多个列表
- 制作列表的副本
- 获取列表的长度(节点数)
- 按值的某种质量对节点进行排序
- 在列表中搜索特定值
根据结构中存储的数据,我们更多可能比其他操作更频繁地执行某些操作在我们的应用程序中。
线性列表,其中插入、删除和访问值总是出现在第一个节点或最后一个节点是通用的,并且因此,它们被赋予了特殊的名字。
队列是一个线性列表,所有插入都是一次完成的列表的末尾,所有删除和访问都在另一端。
链表通常为我们提供一组操作,使我们能够遍历整个结构,并且在每个节点上执行操作(以及扩展的所有节点)。
该对通过以下集合相互区分他们提供的操作。这两者传统上是在不同的方式,使他们各自的操作更多有效。
链表通常更适合以下用例:需要对列表中的任何节点具有读/写访问权限。
队列更适合所谓的生产者/消费者情况生产者和消费者以异步方式与数据结构交互,以及人们想要按项目使用顺序使用数据结构中的项目插入,即先进先出(FIFO)。
队列是链表的特定组织。 因此,当您想要暗示队列是使用数据的最佳方式时,使用队列是实用的。 例如,当您不希望用户在不先清空队列的情况下访问队列下一项以外的数据时,或者您希望按添加到队列的时间对数据进行排序时,您可能希望使用队列。