递归

  • 使用递归函数,一直递归到链表的最后一个结点,该结点就是反转后的头结点,记作 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. vue+webpack热替换
  2. Thread类和Runable接口使用
  3. 直击「神策 2021 数据驱动大会」五大论坛,精彩不断
  4. signature=8eba57874a1690f9fdaff3572c7cef5f,基于EFI固件文件系统的平台安全策略研究与实现...
  5. SAP Fiori Elements edit按钮的实现细节
  6. ubuntu下搭建java web开发环境的详细步骤
  7. JAX-RS Bean验证错误消息国际化
  8. Web前端Javascript笔记(8)Ajax前后端交互
  9. 干货:Java并发编程系列之volatile(二)
  10. C语言 扫雷游戏(代码+注释)
  11. Java面试笔试题大全
  12. JVM对象内存分配机制之对象在Eden区分配(五)
  13. php常用函数最全总结
  14. 一本快速入门ARM64体系结构的编程书
  15. 2011年美国大学招生广告
  16. 【Unity】AvProVideo 实现当前视频播放完毕自动加载下一视频
  17. EasyCVR视频融合共享平台作为国标上级平台接入紫光华智云平台的流程解析
  18. python乌龟画五角星_使用Python的turtle模块画五角星
  19. 京东到家自动化测试平台的探索与实践
  20. android输入法切换

热门文章

  1. 腾讯数据库TcaplusDB X 大主宰·大千世界|万家决战,谁领风骚
  2. 企业版微信小程序搭建一 微信小程序注册条件以及备案条件
  3. [二叉树遍历]Z 字形遍历二叉树
  4. ubuntu安装Redis 及指定配置文件启动redis和报配置文件错误的原因
  5. ios卡牌游戏项目源码
  6. JVM 字节码文件与类加载
  7. 基于数字孪生打造智慧园区运营平台,助力园区数字化转型
  8. 迭代算法7——近似迭代法之牛顿迭代法
  9. 计算节点nova服务启动失败
  10. ViewModel 简析