問題の説明:
一方向および双方向リンクリストリンクリストを逆にします。
アルゴリズム:
1.単鎖逆転
パブリッククラスノード{
公共のint値。
次のパブリック・ノード。
パブリック・ノード(int値){
this.value =値。
}
}
パブリック・ノードreverseList(ノードヘッド){
ノードは事前= NULL;
ノードの横= NULL;
(!ヘッド= NULL){ながら
次= head.next。
head.next =前;
事前=ヘッド。
ヘッド=次回。
}
事前返します。
}
2.リバース二重リンクリスト
パブリッククラスDoubleNode {
公共のint値。
公共DoubleNode最後。
次の公共DoubleNode。
公共DoubleNode(int値){
this.value =値。
}
}
パブリックDoubleNode reverseList(DoubleNodeヘッド){
DoubleNodeが予め= NULL;
DoubleNode次= NULL;
(!ヘッド= NULL){ながら
次= head.next。
head.next =前;
head.last =次回; //注意区别
前=ヘッド。
ヘッド=次回。
}
事前返します。
}
アルゴリズム分析:
1.単鎖逆転
(1)一本鎖は、反転後の最初のノードリンクリストとして、二つの追加の変数ノード、ヘッドが一時的に格納されている次のノードへのノードと、反転しました。
リストをマークする方法を、分割する方法、(2)注意事項は、第1ノードのリストを生成する方法の逆転と絶えず増加要素の後に、逆転されていません。
2.リバース二重リンクリスト
二重リンクリスト単一リンクリスト反転差は、主に現在のための「先行ノード」をノードセットにあるが、ときにその前駆体ノードの現在のノードのノードが反転された後。