C 中优先队列的小混淆
Little confusion in Priority Queue in C
我是这样写代码的:
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<itempriority
是如何完美运行而 ptr->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
我是这样写代码的:
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<itempriority
是如何完美运行而 ptr->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