.設 q:=p^llink; 則
q^rlink:=p^rlink; p^rlink^llink:=q; p^llink:=q^llink;
q^llink^rlink:=p; p^rlink:=q; q^llink:=p
()前兩個語句改為
pllink^rlink< p^rlink;
p^rlink^llink< p^llink;
()後三個語句序列應改為
q^rlink< p^rlink;∥以下三句的順序不能變
p^rlink^llink< q;
p^rlink< q;
.mp是一個過程其內嵌套有過程subp
subp(sq)的作用是構造從s到q的循環鏈表
subp(papb)調用結果是將pa到pb的前驅構造為循環鏈表
subp(pbpa)調用結果是將pb到pa的前驅(指在L鏈表中並非剛構造的pa循環鏈表中)構造為循環鏈表
總之兩次調用將L循環鏈表分解為兩個第一個循環鏈表包含從pa到pb的前驅L中除剛構造的pa到pb前驅外的結點形成第二個循環鏈表
.在指針p所指結點前插入結點s的語句如下
s>pre=p>pre; s>next=p; p>pre>next=s; p>pre=s;
.(A) f<>NIL並且f<>NIL
(B) f↑data < f↑data
(C) f↑data<f↑data
(D) f↑data<f↑data
(E) f< f↑link 或f=f↑link;
)本算法功能是將雙向循環鏈表結點的數據域按值自小到大排序成為非遞減(可能包括數據域值相等的結點)有序雙向循環鏈表
)()r>prior=q>prior;∥將q結點摘下以便插入到適當位置
()p>next>prior=q;∥()()將q結點插入
()p>next=q;
()r=r>next;或r=q>next;∥後移指針再將新結點插入到適當位置
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23364.html