Pが指すノードと次のノードの位置を交換します
トピック
線形リストの最初のノードがリストによって示されている場合、Pが指すノードと次のノードの位置を交換するアルゴリズムを記述してください(pがリンクリストの最後のノードではないと仮定します) 。
分析
アルゴリズムは2つの部分に分かれています
- 最初:pがリンクリストの最初のノードを参照する場合。
- 2番目:Pがリンクリストの中間ノードを参照する場合。
コード
// 交换P所指结点与其下一个结点的位置
LinkList EXCHANGE(LinkList list,LinkList p){
LinkList q = list;
if (p==q) {
list=list->link;
p->link=p->link->link;
list->link=p;
}else {
while (q->link!=p) {
q=q->link;
}
// 这里的顺序不能换,避免断链。
q->link=p->link;
p->link=p->link->link;
q->link->link=p;
}
return list ;
}