单链表反转

package com.paulzhangcc.springtest;

/**
 * @author paul
 * @description
 * @date 2020/1/16
 */
public class TestInvertLinkedList {
    public static class Node {
        public Node(String value) {
            this.value = value;
        }
        public String value;
        public Node next;
    }

    public static void main(String[] args) {
        Node node1 = new Node("1");
        Node node2 = new Node("2");
        node1.next = node2;
        Node node3 = new Node("3");
        node2.next = node3;
        Node node4 = new Node("4");
        node3.next = node4;
        Node node5 = new Node("5");
        node4.next = node5;

        print(node1);
        print(fz(node1));
    }

    public static void print(Node node) {
        while (node != null) {
            System.out.print(node.value + " ");
            node = node.next;
        }
        System.out.println();
    }

    public static Node fz(Node first) {
        if (first == null || first.next == null) {
            return first;
        }
        Node now = first;
        Node p1 = first.next;
        Node p2 = p1 == null ? null : p1.next;
        first.next = null;
        for (; ; ) {
            p1.next = now;
            if (p2 == null) {
                break;
            }
            now = p1;
            p1 = p2;
            p2 = p1 == null ? null : p1.next;
        }
        return p1;
    }
}

你可能感兴趣的:(单链表反转)