链表的逆序输出

public class Result {

    public static void main(String [] args){

        Node n1 = new Node();

        n1.value=1;

        Node n2 = new Node();

        n2.value=2;

        Node n3 = new Node();

        n3.value=3;

        Node n4 = new Node();

        n4.value=4;

        Node n5 = new Node();

        n5.value=5;

        Node n6 = new Node();

        n6.value=6;

        n1.next = n2;

        n2.next = n3;

        n3.next = n4;

        n4.next = n5;

        n5.next = n6;

//        Node result = reverse(n1);

//        printList(result);

        Node recursiveNode = recursive(n1);

        printList(recursiveNode);

    }

    private static Node recursive(Node head) {

        if (head == null || head.next == null){

            return head;

        }

        Node reHead = recursive(head.next);

        head.next.next = head;

        head.next = null;

        return reHead;

    }

    private static Node reverse(Node head) {

        if (head == null || head.next == null){

            return head;

        }

        Node rehead = null;

        while (head != null){

            Node p  = head.next;

            head.next = rehead;

            rehead = head;

            head = p;

        }

        return rehead;

    }

    private static void printList(Node n1) {

        if (n1 == null){

            return;

        }

        Node n = n1;

        while (n != null){

            System.out.println(n.value);

            n = n.next;

        }

    }

}

你可能感兴趣的:(链表的逆序输出)