Javaは単一チェーンテーブルの反転を実現する
Nodeクラス:
反復インプリメンテーション:次のノードを記録してから、現在のノードを前のノードに向け、現在のノードを記録してから、次のノードを現在のノードに変更します.
再帰的インプリメンテーション:最後のノードを見つけてから最後のノードから反転し、現在のノードが反転したときに後ろのノードが反転し、チューブを必要としません.最後に元の最後のノードに戻る
public class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
}
}
反復インプリメンテーション:次のノードを記録してから、現在のノードを前のノードに向け、現在のノードを記録してから、次のノードを現在のノードに変更します.
public static Node reverseList(Node head) {
if (head == null) {
return null;
}
if (head.next == null) {
return head;
}
Node pre = null;
Node current = head;
Node next = null;
while (current != null) {
next = current.next;
current.next = pre;
pre = current;
current = next;
}
return pre;
}
再帰的インプリメンテーション:最後のノードを見つけてから最後のノードから反転し、現在のノードが反転したときに後ろのノードが反転し、チューブを必要としません.最後に元の最後のノードに戻る
public Node reverse2(Node node, Node prev) {
if (node == null) {
return null;
}
if (node.next == null) {
node.next = prev;
return node;
} else {
Node re = reverse2(node.next, node);
node.next = prev;
return re;
}
}