递归

  • 使用递归函数,一直递归到链表的最后一个结点,该结点就是反转后的头结点,记作 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. 业界丨一文看懂AI人才百万美元年薪因何而来?
  2. 008 centos7安装docker ce
  3. python基础教程是什么语言-终于懂得python中文入门教程
  4. 【转】VS2008制作打包程序将安装路径写入注册表
  5. ubuntu 运行python subprocess 出现/bin/sh: 1: source: not found 错误
  6. BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40
  7. ajax请求flask以后得到的响应查看
  8. 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
  9. ITFriend创业败局(四):菜鸟CEO的自我修养
  10. 编写junit 测试_使用JUnit和Repeat注​​释编写有效的负载测试
  11. 爬虫实战学习笔记_4 网络请求urllib3模块:发送GET/POST请求实例+上传文件+IP代理+json+二进制+超时
  12. css盒子模型实验报告总结_前端知识点总结——盒子模型
  13. 软考初级信息处理技术员(一)
  14. Android 服务器消息推送技术
  15. 校园歌手大赛10分c语言,校园歌手大赛评分细则
  16. [Err] 1146 [Err] 1682
  17. 关于心理的二十五种倾向(查理·芒格)-1
  18. Oracle实验二 表的查询和更新
  19. ruby中的符号_Ruby中的凡人和不朽符号
  20. SOCKS 代理协议漫谈

热门文章

  1. 调试利器——Stetho
  2. SWOT基础与个人SWOT分析
  3. Transformer多模态
  4. Linux下静态库与动态库的引用关系深入分析
  5. python提权_linux 提权-SUID提权
  6. Day01.初识Python
  7. android相关技术总结
  8. Tomcat安装注意事项,以及预防各种坑。
  9. 干货!计算机组成原理简介
  10. vuex状态管理,用最朴实的话讲解最难懂的技术,