オファー(リスト)を受賞 - 逆のリストを

  (リバースリスト)被験者の説明:


リストを反転リストを入力した後、出力ヘッダの新しいリスト。


  問題解決のアイデア:トピックとリストが単独でリンクされたリストであるので、リスト全体を反転させるために、我々は、ノード間の問題を整理して指定する必要があり、最後の節点秒のカウントダウンに、下部3分の最後から二番目のポイントA、......、最初に第一ヌルへの最初のポイント;、一つ一つを選んするリストから調整を行う必要があるノード、この補正は、2つの補助ポインタを必要とする:プレレコードその前のノードの位置ので、前のノードにノード点の次のポインタが、ノードへのポインタを記録した後結び目Pを指す前に、前の点に対処する必要があるノードの損失を回避します

    • 次の手順に例のヘッドノード:
    • 1.ヘッド反転点は、ノードがNULLでなければならない場合、前者が反転されていない、ポインタが予めヌルに初期化され、その結果、ヌルです。
    • ポインタP head.nextと次のノードの前記記録ヘッド。
    • 3. head.nextは前を向いてみましょう、である、リストからヘッドを外します。
    • 4.完了ヘッドノードと前方に接続されたノードの除去は、その後、我々はジャンクションで動作する必要がありますし、次のノードへの頭部の動き、その結果、プレポインティングヘッド、ヘッドポイントを事前する必要があるので。
    • ヘッドは、4元のリストを完了し、ヌルをポイントし、サイクルの終わり、事前に復帰するまで、この動作を繰り返しています。
/ * 
{パブリッククラスListNode 
    ヴァルINT; 
    ListNode次に= NULL; 

    ListNode(INTヴァル){ 
        this.val =ヴァル; 
    } 
} * / 
publicクラスが溶液{ 
    公共ListNode ReverseList(ListNodeヘッド){ 
        //空のリストが決定されるとリスト1の長さ
        IF(ヘッド== NULL || head.next == NULL){ 
            戻りヘッド; 
        } 
        現在のノード位置の前と後の二つのポインタを格納するための//初期化
        ListNode = NULL事前; 
        ListNode NX = NULLと、
        一方(!ヘッド= NULL){ 
            現在のノードの次のノードの//最初の記憶位置
            NX = head.next; 
            //完全な逆転(SO head.next向け予備)
            head.next =事前;
            ノードポインタ移動// 
            プリ=ヘッド。
            //最初の工程上の次のノードの位置を保存するために、現在のノードを移動する
            ヘッド= NXと、
        } 
        戻りプレ; 
    } 
}

  

おすすめ

転載: www.cnblogs.com/dashenaichicha/p/12572366.html