码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]Reverse Linked List

时间:2017-05-01 00:20:23      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:节点   ret   ever   如何   ext   return   pre   简单   eve   

题目:Reverse Linked List

逆置单链表。

思路:递归。

递归后,如何逆置头结点?

因为头结点的下一个节点经过递归逆置后会变成最后一个节点,所以,实际上是知道返回的新链表的最后一个节点的。这样就可以简单的逆置了。

注意:要判断只有一个节点的情况。

ListNode* LeetCode::reverseList(ListNode* head){
    if (!head || !head->next)return head;//当链表为空,或只有一个节点
    ListNode* p = reverseList(head->next);//递归
    head->next->next = head;//将头结点放到尾部
    head->next = nullptr;//最后一个节点的下一个节点置为空
    return p;
}

思路:非递归。

ListNode* LeetCode::reverseList(ListNode* head){
    if (!head || !head->next)return head;//当链表为空,或只有一个节点
    ListNode* p = nullptr;//新链表的头部
    while (head){
        ListNode* q = head->next;//保存当前节点的下一个节点
        head->next = p;//逆置当前节点
        p = head;//更新新链表的头部
        head = q;//移动到下一个节点
    }
    return p;
}

 

[LeetCode]Reverse Linked List

标签:节点   ret   ever   如何   ext   return   pre   简单   eve   

原文地址:http://www.cnblogs.com/yeqluofwupheng/p/6790629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!