ホームページ >Java >&#&チュートリアル >リンクリストでよく使われる操作 - 反転の詳細な説明

リンクリストでよく使われる操作 - 反転の詳細な説明

零下一度
零下一度オリジナル
2017-07-19 13:40:502063ブラウズ

リンク リストでよく使用される操作 - 反転

まず、単一リンク リストのノード クラスを定義しましょう

public class ListNode {2         
int val;3         ListNode next = null;// 指向的下个节点4 5         
ListNode(int val) {6             this.val = val;7         }8     
}

単一リンク リストの反転を実装するには 2 つの方法があります

1。後ろから前へ。先頭ノードから開始して、末尾ノードが見つかるまで逆方向に検索し、その後、逆方向に進みます。

 1     public ListNode reverseList(ListNode head) { 2         
 if (head == null || head.next == null) 3             return head; 4  5         
 ListNode prev = reverseList(head.next);// 递归调用,先反转下个节点 6  7         
 head.next.next = head;// 将当前结点的指针域指向前一结点 8         
 head.next = null;// 前一结点的指针域令为null; 9         
 return prev;// 反转后新链表的头结点10     
 }

2. トラバースを使用して、前から後ろに反転します。まず次のノードを保存し、次に現在のノードを前のノードにポイントし、ノードを下に移動して次の反転のサイクルを継続します。

 1     public ListNode reverseList(ListNode head) { 2         if (head == null) { 3             
 return null; 4         } 5         ListNode pre = null; 6         
 ListNode next = null; 7         while (head != null) { 8             
 // 保存下个节点,防止丢失 9             next = head.next;10             
 // 将他的下个节点指向前个节点11             head.next = pre;12 13             
 // head指向pre后,就继续依次反转下个节点14             
 // 让pre,head依次向后移动一个节点,继续下一次的反转15             
 pre = head;16             head = next;17         }18         
 return pre;19     
 }

オンラインプログラミングを終了し、将来簡単に参照できるように記録しました。

以上がリンクリストでよく使われる操作 - 反転の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。