【发布时间】:2011-11-24 08:11:21
【问题描述】:
我需要在 C 编程中使用单链表实现一个优先级队列。
我对优先级队列没有一个清晰的概念。我用谷歌搜索但没有完全理解我发现了什么。我的理解是优先级队列是一个队列,其元素按优先级排序。插入到列表中的内容根据元素的优先级在列表中进行定位。
可以说,我们有以下场景。 (注意:我假设,更高的价值与更高的优先级):
Element-->2 (priority=2) (Now in position 0)
如果需要插入另一个元素,说Element-->3 (priority=3),它的优先级更高。
我可以移动前一个元素Element-->2 (priority=2),并将这个新的Element-->3 (priority=3) 插入到位置0,同时Element-->2 (priority=2) 移动到列表中的位置1。
现在列表变成了,
Element-->3 (priority=3) followed by Element-->2 (priority=2)
同理,在插入的基础上,是不是要把列表中的所有元素都移位?
这对吗?
【问题讨论】:
-
到目前为止一切顺利——您的实施是否陷入困境?
-
简单地说,当它必须对列表进行操作时,它需要对具有最高优先级的项目进行操作......你如何做到这一点取决于你是否将最高优先级的元素放在列表前面或者你把它放在堆的前面(如果你使用堆)...
标签: c data-structures linked-list priority-queue