我已经为优先队列创建了这个程序,我遇到了问题。我得错了输出。
这是输入:
Insert 10000 2
Insert 10000 2
Insert 10000 3
Insert 19444 9
Pop
Insert 10331 3
Pop
Pop
Pop
Pop
Pop
这是输出应该是什么:
19444
10000
10331
10000
10000
-1
这是我得到的输出:
19444
10000
10000
10000
10331
-1
已解决!
答案 0 :(得分:0)
我认为您的优先级检查逻辑不正确:
while (queue->next != NULL && queue->next->prior >= /* not <= */ priorty)
或更好
while (queue->next != NULL && priorty <= queue->next->prior)
不确定您打算如何处理两个元素具有相同优先级的情况,但由于您的插入使用“大于”来替换队列的头部,因此您可能希望保持相同的逻辑。
答案 1 :(得分:0)
你插入节点的循环不正确,应该是:
while (queue->next != NULL && queue->next->prior >= priorty)
queue = queue->next;