206 24&再帰(リスト)

24

リンクリストを考えると、すべての2つの隣接ノードを交換し、その頭を返します。

あなただけ自体を変更することができるノードは、リストのノードの値を変更することはできません。

 

例:

1 - > 2 - > 3 - > 4を考えると、あなたは、2-> 1 - > 4 - > 3リストを返す必要があります。

206

単独リンクリストを逆にします。

例:

入力:1-> 2-> 3-> 4-> 5-> NULLの
出力:5-> 4-> 3-> 2-> 1-> NULL
フォローアップ:

リンクリストは、いずれかの繰り返しや再帰的に反転させることができます。あなたは両方を実装してもらえますか?


 

ここでは、唯一の再帰的なアルゴリズムを検討し、24は、交換の内の2つのノード間で、最初からです。206はスタートからフィニッシュまで、逆の順序です。(のみスイッチングノードリストか交換が達成新しいノードの値を考慮して)

我々のコードに

24

1  クラスソリューション{
 2  公共3      ListNode * swapPairs(ListNode * ヘッド){
 4          であれば(ヘッド== NULL ||頭部>次== NULL)
 5              リターンヘッド。
6          ListNode * T =頭部> 次。
7          頭部>次= swapPairs(T-> 次);
8          T->次= ヘッド。
9          リターントン。
10      }
 11 }。

206

1  クラスソリューション{
 2  公共3      ListNode * reverseList(ListNode * ヘッド){
 4          であれば(ヘッド== NULL ||頭部>次== NULL){
 5              リターンヘッド。
6          }
 7          ListNode * RET = reverseList(頭部> 次);
8          頭部>ネクスト>次= ヘッド。
9          頭部>次= NULL;
10          リターンRET;
11      }
 12 }。

1-> 2-> 3-> 4鎖は、例えば、次のとおりです。

(第1のコードセグメントに対応するグリッド線数の数)

(* 3はノード3へのポインタの値を表します)

(ダブルプログラムのラインの流れを矢印します)

 


 

24可視3つのノードを考慮 - >現在のノードは、現在のノードの隣の点、次のノード現在のノード点の次のノード(再帰リターン)。

最初の2つのノードがこれら3つのノードを交換することができ、ノード再帰リターンは、調整ノードを有するとみなさ。(なお、コードセグメントの中央に再帰呼び出し、この手段中央ノードポインタフィールド変形こと)

そして戻って、現在のノードの次のノードへのポインタが実行され、リストに全体の交換であるとして、あなたがマクロの概念を持っている必要があり、その後、元のリストの究極のリターンはそう常にプッシュ、最後のノードのポインタである、206を考えますそれは、常に「オリジナルにリストの相対的な最後のノードへのポインタ」です。(すなわち、最後のノードに直接圧力を可能にする、ノードポインタフィールドの変更、前、プログラムが最初にスタック解除= * 4 <ヘッドから即ち、第1の時間、戻り値最後の再帰を返すように続け、コードセグメントの前に再帰呼び出しすることを注スタック解除>)同じポインタの末尾に返されます

ノードが前になる前に、それ自体へのノードを再帰的に最後の再帰A「ノードの次のノードを」返すので再帰的には、編集ポインタフィールド自体に、ノード自体にノードポイントの前と後にノードを発生していません現在のノードへのポインタフィールドポイントを変更します。再帰リターンノードポインタ(現在ヘッドノード)の終了後


 

ルック手順と書かれた手順を理解し、約書き込みできるようになり、今ポインタ他人の数と位置を一瞥、二つの異なるものです。しかし、完全に自分の書き込みがあまりにも困難でした。

1.返された何

2. DO

3.終了します

- > 4つの再帰呼び出し位置。

問題を検討するために、各個人のやり方、各オプションが異なる原因を有することができます。さまざまな問題の規模モデリングからは、各オプションが異なることを行うことがあり、道路の多くを持っているかもしれませんが、正しい道へのアクセスが制限され、本当に。

 

おすすめ

転載: www.cnblogs.com/katachi/p/12562278.html