我需要用单向链表在C编程中实现一个优先队列。
我对优先队列没有清晰的概念。我搜索了一下,但是并没有完全理解我找到的东西。我的理解是,优先队列是一个按照优先级排序元素的队列。插入列表的位置取决于元素的优先级。
假设我们有以下情景。(注意:我假设较高的值具有较高的优先级):
Element-->2 (priority=2) (Now in position 0)
如果需要插入另一个元素,比如
Element-->3 (priority=3)
,它的优先级更高,则可以将前一个元素Element-->2 (priority=2)
移动,在列表中的位置0插入这个新的Element-->3 (priority=3)
,并将Element-->2 (priority=2)
移动到列表中的位置1。现在列表变成了:
Element-->3 (priority=3) followed by Element-->2 (priority=2)
同样地,基于插入操作,我是否需要将列表中的所有元素都进行移动?
这样正确吗?