[leetcode] 206. Reverse Linked List

原创 2016年06月01日 11:35:12

Reverse a singly linked list.

Solution 1

Idea: create a dummy node and insert node after dummy node 

 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (head==NULL)
            return head;

        ListNode* dummy = new ListNode(0);
        dummy->next = head;
        ListNode* cur = head;
        while(cur->next){
            ListNode* tmp = cur->next;
            cur->next = tmp->next;
            tmp->next = dummy->next;
            dummy->next = tmp;
        }
        return dummy->next;
        
    }
};

Solution 2

Idea: iteratively reverse two nodes

 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (!head) return head;
        ListNode* pre = NULL;
        ListNode* cur = head;
        while (cur&&cur->next){
            ListNode* tmp = cur->next;
            cur->next = pre;
            pre = cur;
            cur = tmp;
        }
        cur->next = pre;
        return cur;
    }
};

Solution 3

Idea: recursive function

 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (!head||!(head->next)) return head;
        ListNode* node = reverseList(head->next);
        head->next->next = head;
        head->next = NULL;
        return node;
    }
};




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

<LeetCode OJ> 206. Reverse Linked List

206. Reverse Linked List My Submissions Question Total Accepted: 74536 Total Submissions: 200484...

LeetCode206之Reverse Linked List Java题解

题目: Reverse a singly linked list. 解题: 采用最直接的思路,从链表的第二个节点开始向后遍历,将每一个遍历的节点插入作为当前的第一个节点,为了方便操作,我们定义一个f...

LeetCode-206. Reverse Linked List (Java)

Reverse a singly linked list. ----------------------------------------------------------------------...
  • NOadu
  • NOadu
  • 2017-06-28 10:19
  • 92

【LeetCode】206. Reverse Linked List 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51820937Subject 出处:https://leetcode.com/pro...

leetcode微软,亚马逊,雅虎面试题206. Reverse Linked List的java实现

这是一道道简单的链表题,但是有很多大公司都有出这道面试题,可见基础题在面试中也很重要 这里有两种解法,虽然大体相同,但是耗时不同 206. Reverse Linked List Rever...

LeetCode-206&92.Reverse Linked List

Reverse a linked list from position m to n. Do it in-place and in one-pass. For example: Given 1->2...

LeetCode题解-206-Reverse Linked List Ⅰ

原题 迭代法 解题思路 新建两个ListNode变量p1与p2存放遍历时的节点与其后驱节点,原先为P1->P2,,遍历时将其反转P2-P1,遍历结束则整个链表翻转完毕。 需要注意的是h...

leetcode(54).206. Reverse Linked List

题意: 反转一个单链表。 初步分析: 开始画图,把这个流程表示出来了就可以了。 核心点:1 对结点操作  2 将操作结点往后移 对结点的操作核心是:结点的next应该是要指向下一个结点的...

LeetCode 206. Reverse Linked List 解题报告

LeetCode 206. Reverse Linked List 解题报告

LeetCode 92 & 206. Reverse Linked List

题目206. Reverse Linked List 题意:将单链表反转 思路:从头节点开始指针逆转 具体实现见下面代码:public class LeetCode206 { publi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)