1つのリバースリスト
実施例1: LeetCode 206。この質問は簡単ですが、それは多くの企業の面接の質問の一つです。次のように反転する前と後に示します:
に従ってポインタの間、以下に示すように反転する過程で主に、移動されます。
クラスのソリューション{ 公共ListNode reverseList(ListNodeヘッド){ ListNode PREV = ヌル; しばらく(!ヘッド= ヌル){ // 最初に修正さhead.nextバックアップの各変更は、そうでない場合は、ヘッドが見つけることができません前にhead.next ListNode nextTemp = head.next; // 前回のヘッドノードの格納された情報を修正するための2 head.nextの一時 head.next = PREVを; // ヘッドノードTEMPの格納された情報を更新3。 PREV = ヘッド; // 4は継続しました横断 ヘッド= ; nextTemp } // リンクリストノードの新しいヘッド返す リターンPREV; } } // 再帰バージョンの実装 クラスソリューション{ 公共ListNode reverseList(ListNodeヘッド){ // 再帰終了条件 IF(ヘッド== NULL || head.next == NULL)戻りヘッド; // 再帰プロセス動作の最後の要素から開始さ ListNode P = reverseList(head.next); head.next.next = ヘッド; head.next = NULL ; 戻りP; } }
LeetCode:92このような問題を抱えています
注意:リストいくつかの基本的な質問操作の場合:LeetCodeを83,86,328,2,445
2仮想ヘッドノードのリストを設定するには
実施例1: LeetCode 203。次のように説明するためのノードを削除するには、ノード3を削除するように設定されています。
最後の要素を削除するには、上記のロジックでは、最後の要素として次のNULLに、また事実です。curがノードnode前に削除する必要がありますを参照するので、しかし、問題は、最初の要素が保持していないということです。
0