(リバースリスト)被験者の説明:
リストを反転リストを入力した後、出力ヘッダの新しいリスト。
問題解決のアイデア:トピックとリストが単独でリンクされたリストであるので、リスト全体を反転させるために、我々は、ノード間の問題を整理して指定する必要があり、最後の節点秒のカウントダウンに、下部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と、 } 戻りプレ; } }