我写了这样的代码:
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
不是这样的情况下如何正常运作?
答案 0 :(得分:4)
考虑一下
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