递归

  • 使用递归函数,一直递归到链表的最后一个结点,该结点就是反转后的头结点,记作 ans
  • 此后,每次函数在返回的过程中,让当前结点的下一个结点的 next 指针指向当前节点。
  • 同时让当前结点的 next 指针指向NULL ,从而实现从链表尾部开始的局部反转
  • 当递归函数全部出栈后,链表反转完成。
    
    class Solution
    {
    public:ListNode* ReverseList(ListNode* pHead) {if(pHead==NULL||pHead->next==NULL){return pHead;}ListNode* ans=ReverseList(pHead->next);//递归调用pHead->next->next=pHead;//让当前节点的下一个节点的next指针指向当前节点pHead->next=NULL;  //同时让当前节点的next指针指向NULL, 从而实现从链表尾部开始的局部反转return ans;}
    };

    复杂度分析:

    时间复杂度:O(N),其中 N 是链表的长度。需要对链表的每个节点进行反转操作。

    空间复杂度:O(N),其中 N 是链表的长度。空间复杂度主要取决于递归调用的栈空间,最多为 N 层

使用递归方法实现链表反转相关推荐

  1. 经典算法——单链表反转的递归方法和非递归方法

    单链表反转有递归和非递归两种实现方法, 首先定义链表结点: //定义一个链表节点 struct ListNode {int value;ListNode *next; }; 一.递归方法 先反转后面的 ...

  2. 链表反转的两种实现方法

    #include <iostream> using namespace std; //元结点 struct Node {     int data;     Node *next; }; ...

  3. 经典算法——单向链表反转

    1. 题目 单向链表反转是一道经典的求职面试笔试或机试题.给定如下如下链表的节点定义: struct LinkNode {int value;LinkNode* next; }; 比如有一个链表是这样 ...

  4. 【数据结构与算法】 01 链表 (单链表、双向链表、循环链表、块状链表、头结点、链表反转与排序、约瑟夫环问题)

    一.线性表 1.1 概念与特点 1.2 线性表的存储结构 1.3 常见操作 1.4 应用场景 二.链表 2.1 链表简介 2.2 单向链表(单链表) 2.21 基本概念 2.22 单链表基本操作 2. ...

  5. 链表7:超高频面试题——链表反转之一

    链表反转是一个出现频率特别高的算法题,笔者过去这些年面试,至少遇到过七八次.其中更夸张的是曾经两天写了三次,上午YY,下午金山云,第二天快手.链表反转在各大高频题排名网站也长期占领前三.比如牛客网上这 ...

  6. python实现链表反转(转置)

    python实现链表反转(转置) 链表是面试里面经常涉及到的考点,因为链表的结构相比于Hashmap.Hashtable.Concurrenthashmap或者图等数据结构简单许多,对于后者更多面试的 ...

  7. 每隔k次反转一次 链表_PTA 5-2 Reversing Linked List (25) [法一] - 线性表 - 链表反转 (PAT 1074)...

    Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...

  8. 数据结构1:单链表反转java代码解释

    来源于尚硅谷的老师代码,只因其中有几行代码自己课上没听明白,课后自己整理了一下 首先完整代码如下: //将单链表反转 public static void reversetList(HeroNode ...

  9. bat面试题 python 单链表反转排序

    单链表反转python实现 单链表的反转可以使用循环,也可以使用递归的方式 1.循环反转单链表

最新文章

  1. System_Recovery_21.0.3_62137_Multilingual_Product
  2. 【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 二维数据的 K-Means 聚类 ) ★
  3. svn修改提交路径_使用SVN钩子强制提交日志和限制提交文件类型
  4. 谋定智慧农业-农民丰收节·万祥军:京东共聚黑山县三方合力
  5. CodeForces 1131G. Most Dangerous Shark
  6. Dubbo管理控制台dubbo-admin搭建
  7. Visual C#.Net网络程序开发-Tcp篇(1)
  8. 类似腾讯手机管家应用android源码
  9. Incorrect string value: '\xE5\xA4\xA7\xE5\xB9\x85...' for column' name' at row 1的解决方法
  10. 只愿得一人心白首不分离
  11. LCD显示屏选购技巧是什么?
  12. 上亿海量数据处理方法
  13. linux卸载teamviewer,ubuntu 16.04 desktop + server LTS - TeamViewer 软件彻底卸载
  14. pytorch中保存、载入权重
  15. sql server中datename函数的使用
  16. 【STM32】获取STM32官方固件库
  17. 百度Apollo仿真仿真平台搭建-附1
  18. VS2019 .NetCore智能提示从英文变成中文设置
  19. 服务器镜像文件查看,查找镜像服务器地址
  20. 程序员多数性功能不行_1024,节日快乐!南京程序员绝不认输

热门文章

  1. 硬件基础 - MOS管
  2. 计算机运算法则图鉴,在西航 | 脑洞大开!四则运算的西航生活图鉴,各类等式出乎意料……...
  3. 渲染单色_单色设计红色
  4. ps学习日记-常用的分辨率设置
  5. python map函数详解
  6. PMO和项目经理必备的七大项目管理软技能(上篇)
  7. QT MSVC 编译器添加新类报错LNK2019 error LNK2019: unresolved external symbol public
  8. Spring中的事务控制学习中(转)
  9. 为什么不能随便叫别人领导
  10. 测试开发工程师常见面试题(随时更新)