[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 206 Reverse Linked List(反转链表)(Linked List)(四步将递归改写成迭代)(*)

翻译反转一个单链表。原文Reverse a singly linked list.分析我在草纸上以1,2,3,41,2,3,4为例,将这个链表的转换过程先用描绘了出来(当然了,自己画的肯定不如博客上面...
  • NoMasp
  • NoMasp
  • 2016年01月14日 06:22
  • 3747

【LeetCode-面试算法经典-Java实现】【203-Remove Linked List Elements(删除单链表中的元素)】

【203-Remove Linked List Elements(删除单链表中的元素)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.co...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月26日 07:21
  • 2312

【LeetCode】Reverse Bits 翻转二进制

题目Reverse Bits Reverse bits of a given 32 bits unsigned integer. For example, given input ...
  • xiangshimoni
  • xiangshimoni
  • 2015年04月23日 14:59
  • 1050

LeetCode题解-206-Reverse Linked List Ⅰ

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

leetcode(54).206. Reverse Linked List

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

LeetCode 206. Reverse Linked List 解题报告

LeetCode 206. Reverse Linked List 解题报告
  • camellhf
  • camellhf
  • 2016年10月09日 16:58
  • 253

LeetCode 92 & 206. Reverse Linked List

题目206. Reverse Linked List 题意:将单链表反转 思路:从头节点开始指针逆转 具体实现见下面代码:public class LeetCode206 { publi...
  • Ruixin1993
  • Ruixin1993
  • 2017年03月13日 10:43
  • 150

leetCode 206. Reverse Linked List

题目链接:https://leetcode.com/problems/reverse-linked-list/         题目内容: Reverse a singly linked ...
  • shen_jz2012
  • shen_jz2012
  • 2016年02月18日 21:14
  • 250

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

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

<LeetCode OJ> 206. Reverse Linked List

206. Reverse Linked List My Submissions Question Total Accepted: 74536 Total Submissions: 200484...
  • EbowTang
  • EbowTang
  • 2016年01月17日 14:47
  • 1410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 206. Reverse Linked List
举报原因:
原因补充:

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