Javaで双方向リストを反転させる方法は何ですか?

双方向リストを反転させるには、次の手順に従います。

  1. 一時変数tempを作成し、現在のノードの次のノードを保存する。
  2. 現在のノードの次のノードを前のノードに向けて、現在のノードの前のノードをtempに向ける。
  3. temp として現在のノードを設定する。
  4. 2と3のステップを繰り返し、現在のノードがnullになるまで。
  5. 新しいノードを作り、元のリンクリストの最後のノードにセットする。

以下はサンプルコードです。

class Node {
  int value;
  Node prev;
  Node next;
  
  public Node(int value) {
    this.value = value;
  }
}

public class DoublyLinkedList {
  private Node head;
  
  public void reverse() {
    Node current = head;
    Node temp = null;
    
    while (current != null) {
      temp = current.next;
      current.next = current.prev;
      current.prev = temp;
      current = temp;
    }
    
    if (temp != null) {
      head = temp.prev;
    }
  }
  
  // 添加其他方法和测试代码
}

上記のコードでは、reverse()メソッドが双方向リストを反転するために使用されています。最初に、私たちはヘッドノードから始めて、リスト内の各ノードを順番に走査します。走査中に、現在のノードの前後のポインタを交換し、現在のノードを次のノードに設定し、このプロセスを現在のノードがnullになるまで繰り返します。最後に、元のリストの最後のノードを新しいヘッドノードとして設定します。

bannerAds