Reverse Linked List

原创 2015年07月08日 16:11:01

 

Reverse a singly linked list.

单链表的逆序有两种方法,一种是递归的,另一种是非递归的(头插法)。

递归解法如下,耗时11ms:

/**
 * 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 || head->next == NULL)
            return head;
        ListNode* p = reverseList(head->next);
        head->next->next = head;
        head->next = NULL;
        return p;
    }
};


递归解法如下,耗时8ms:

/**
 * 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 || head->next == NULL)
            return head;
        ListNode* p = head->next;
        head->next = NULL;
        ListNode* q;
        while(p) {
            q = p;
            p = p->next;
            q->next = head;
            head = q;
        }
        return head;
    }
};


 

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

[LeetCode] Reverse Linked List(递归与非递归反转链表)

Reverse a singly linked list.解题思路对于非递归实现,思路是依次将从第二个结点到最后一个结点的后继设为头结点,然后将该节点设为头结点(需记住将原头结点的后继设为空)。 对...
  • u011331383
  • u011331383
  • 2015年05月16日 14:28
  • 5290

leetcode 206: Reverse Linked List

Reverse Linked List leetcode
  • xudli
  • xudli
  • 2015年05月14日 06:47
  • 13648

【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】

【092-Reverse Linked List II(反转单链表II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Reverse a linked list fro...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月06日 07:40
  • 1653

redis学习笔记(2)---链表adlist

adlist  redis通过prev、next指针实现了双向链表adlist,并通过void*指向数据,用来实现泛型。   与list相关的命令主要有:LPOP,LPUSH,RPOP,RPUSH,...
  • u012658346
  • u012658346
  • 2016年05月03日 20:03
  • 275

Reverse Linked List以及一道有关倒序的题目

Reverse a singly linked list. Hint: A linked list can be reversed either iteratively or recursively...
  • marcosyw
  • marcosyw
  • 2017年05月25日 09:17
  • 94

C++实现单链表(Singly-Linked List)追加、遍历、删除

#include using namespace std; struct Node { int data; struct Node* next; }; class List { Node* ...
  • wupeak
  • wupeak
  • 2015年01月27日 00:13
  • 648

逆转链表的一部分 Reverse Linked List II

问题:Reverse a linked list from position m to n. Do it in-place and in one-pass. For example: Gi...
  • luckyjoy521
  • luckyjoy521
  • 2014年03月13日 10:22
  • 829

链表的反转问题(Reverse Linked List)

反转单链表思路有三种, 1.将1->2->3变为
  • luxialan
  • luxialan
  • 2015年07月30日 10:17
  • 506

C++:实现LinkedList 学习抽象数据类型

C++:实现LinkedList 学习抽象数据类型标签(空格分隔): c++ 数据结构 作者:陈小默C实现LinkedList 学习抽象数据类型 定义需求 作为类 作为List 作为栈stack 作...
  • qq_32583189
  • qq_32583189
  • 2016年09月04日 17:36
  • 3330

链表基本概念和操作 及 206. Reverse Linked List

参考书目与链接: 1、基本概念,双向链表与循环链表 2、链表的创建,增加、删除节点,链表的逆序、排序和销毁等 3、链表基本操作(全) 4、双向、循环链表操作...
  • sqiu_11
  • sqiu_11
  • 2017年04月20日 10:59
  • 214
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Reverse Linked List
举报原因:
原因补充:

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