LeetCode206 反转一个单链表

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xiaoen1/article/details/102768576

LeetCode206 反转一个单链表

示例:

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

进阶:

你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

迭代:

public ListNode reverseList(ListNode head) {
    ListNode cur = head;
    ListNode pre = null;
    ListNode tmp = null;
    while(cur!=null){
        tmp = cur.next;
        cur.next = pre;
        pre = cur;
        cur = tmp;
    }
    return pre;
}

递归:

public ListNode reverseList(ListNode head) {
    if (head == null || head.next == null) {
        return head;
    }
    ListNode nextNode = head.next;
    ListNode p = reverseList(nextNode);
    nextNode.next = head;
    head.next = null;
    return p;
}

猜你喜欢

转载自blog.csdn.net/xiaoen1/article/details/102768576