ホームページ  >  記事  >  Java  >  逆リンクリストを実装する Java コード例

逆リンクリストを実装する Java コード例

黄舟
黄舟オリジナル
2017-10-17 10:11:111445ブラウズ

この記事では、Java 言語で逆リンク リストを実装するコード例を主に紹介します。編集者は、それを必要とする友人の参考のためにここで共有します。

問題の説明

連結リストの先頭ノードを入力し、連結リストを反転し、反転した連結リストの先頭ノードを出力する関数を定義します。リンク リストのノードは次のとおりです:


public class ListNode {
  int val;
  ListNode next = null;
  ListNode(int val) {
    this.val = val;
  }
}

アイデア 1:

リンク リストを逆にするには、ノード i について、次のノードをその先行ノードを指す必要があるため、先行ノードを保存する必要があります。同時に、i の次を再割り当てすると、i の後継者を見つけることができなくなります。そのため、再割り当てする前に i の後継者を保存する必要があります。

コード:


public ListNode ReverseList(ListNode head) {
    if(head == null){
      return null;
    }
    ListNode rHead = null;
    ListNode prior = null;//store prior
    ListNode q = head;//store current
    while(q != null){
      ListNode next = q.next;//store the next
      if(next == null){
        rHead = q;
      }
      q.next = prior;
      prior = q;
      q = next;
    }
    return rHead;
  }

アイデア2:

再帰のアイデアを使用します(再帰を使用する場合、毎回次のようにする必要があるため、まだ考えていません)リンクされたリスト

概要

以上が逆リンクリストを実装する Java コード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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