链表--反转链表

37 阅读1分钟

反转一个单链表。

示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

public class ReverseNode {
    // 双指针法
    public static Node reverseNode(Node head) {
        Node pre = null;
        Node cur = head;
        while (cur != null) {
            Node tmp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;
    }

    // 递归
    public static Node reverseNode(Node head) {
        return reverse(null, head);
    }
    public static Node reverse(Node pre, Node cur) {
        if (cur == null) {
            return pre;
        }
        Node tmp = cur.next;
        cur.next = pre;
        return reverse(cur, tmp);
    }

}