public Node reverse_1(final Node head) {
        if (head == null || head.next == null) {
            return head;
        }
        Node p1 = head;
        Node p2 = head.next;
        head.next = null;
        while (p2 != null) {
            final Node tmp = p2.next;
            p2.next = p1;
            if (tmp != null) {
                p1 = p2;
                p2 = tmp;
            } else {
                break;
            }
        }
        return p2;
    }