gpt4 book ai didi

c - C 中优先队列的小困惑

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:48 24 4
gpt4 key购买 nike

我写的代码是这样的:

ptr=front;
while(ptr->link!=NULL && ptr->priority<itempriority ){
ptr=ptr->link;
}

temp->link=ptr->link;
ptr->link=temp;
return front;

以上代码无效。

  ptr=front;
while(ptr->link!=NULL && ptr->link->priority<itempriority ){
ptr=ptr->link;
}

temp->link=ptr->link;
ptr->link=temp;
return front;

此代码运行完美。

我很困惑为什么我的代码不工作,即 ptr->priority<itempriority

简而言之我想知道如何ptr->link->priority<itempriorityptr->priority<itempriority 时运行良好不是吗?

最佳答案

考虑一下

1 -> 2 -> 5 -> 8

你想在正确的位置插入3

while(ptr->link!=NULL && ptr->priority<itempriority ){
ptr=ptr->link;
}

最后,ptr 将指向 5。最后您将拥有

1 -> 2 -> 5 -> 3 -> 8 //Wrong

第二个版本

while(ptr->link!=NULL && ptr->link->priority<itempriority ){
ptr=ptr->link;
}

最后ptr会是2,最后

1 -> 2 -> 3 -> 5 -> 8 //correct

关于c - C 中优先队列的小困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47194012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com