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;
    }
}