我不清楚队列的概念。看来这个词是模棱两可的,或者至少我对此感到困惑。
虽然似乎对队列最常见的解释(例如在维基百科中)是它是一种遵循 FIFO 原则的抽象数据类型,但实际上这个术语似乎具有更广泛的含义。
例如,我们有
优先级队列,其中根据优先级检索每个项目,
我们有一个堆栈,它也是逆向队列 (LIFO) 的一种形式,
- 我们有消息队列,它似乎只是一个项目列表,没有 排序,通过将简单列表分类为队列 etc
那么有人可以帮我弄清楚为什么队列有这么多不同的含义吗?
最佳答案
队列本质上是一种遵循 FIFO 原则作为其默认性质的数据结构。 让我们把这个队列当作我们日常生活中的一个队列。以火车站排队购票为例。
正常队列:站在队列最前面的人获得门票,任何新到达的人站在队列的末尾,等待轮到他获得门票。
优先队列:假设您是站在该队列中间的贵宾。售票员会立即注意到您,并叫您到队列的最前面取票,即使轮不到您买票。如果你不重要,队列就会继续扮演它通常的角色,但是一旦任何元素被认为比另一个更重要,它就会被拾起,而不管它在队列中的位置。但除此之外,队列的默认性质保持不变。
堆栈:我们不要将它与队列混淆。堆栈的用途与队列的用途本质上不同。举一个洗过并放在厨房里的盘子的例子,最后洗过的盘子是第一个被挑选出来上菜的。因此,堆栈和队列在不同情况下发挥不同作用,不应相互混淆。
消息队列:与优先级队列一样,该队列的默认性质是首先读取先到的消息,而即将到来的消息在队列中排队等待它们轮流,除非一条消息被认为比另一条消息更重要,并且在正常轮流之前被调用到队列的前面。
因此,任何类型的队列的默认性质都保持不变,它继续遵循其 FIFO 原则,除非在特殊情况下另有规定。
希望对你有帮助
关于algorithm - 队列抽象数据类型到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20588125/