Javaで双方向リストを反転させる方法は何ですか?
双方向リストを反転させるには、次の手順に従います。
- 一時変数tempを作成し、現在のノードの次のノードを保存する。
- 現在のノードの次のノードを前のノードに向けて、現在のノードの前のノードをtempに向ける。
- temp として現在のノードを設定する。
- 2と3のステップを繰り返し、現在のノードがnullになるまで。
- 新しいノードを作り、元のリンクリストの最後のノードにセットする。
以下はサンプルコードです。
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になるまで繰り返します。最後に、元のリストの最後のノードを新しいヘッドノードとして設定します。