使用递归方法实现链表反转
递归
- 使用递归函数,一直递归到链表的最后一个结点,该结点就是反转后的头结点,记作 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 层
使用递归方法实现链表反转相关推荐
- 经典算法——单链表反转的递归方法和非递归方法
单链表反转有递归和非递归两种实现方法, 首先定义链表结点: //定义一个链表节点 struct ListNode {int value;ListNode *next; }; 一.递归方法 先反转后面的 ...
- 链表反转的两种实现方法
#include <iostream> using namespace std; //元结点 struct Node { int data; Node *next; }; ...
- 经典算法——单向链表反转
1. 题目 单向链表反转是一道经典的求职面试笔试或机试题.给定如下如下链表的节点定义: struct LinkNode {int value;LinkNode* next; }; 比如有一个链表是这样 ...
- 【数据结构与算法】 01 链表 (单链表、双向链表、循环链表、块状链表、头结点、链表反转与排序、约瑟夫环问题)
一.线性表 1.1 概念与特点 1.2 线性表的存储结构 1.3 常见操作 1.4 应用场景 二.链表 2.1 链表简介 2.2 单向链表(单链表) 2.21 基本概念 2.22 单链表基本操作 2. ...
- 链表7:超高频面试题——链表反转之一
链表反转是一个出现频率特别高的算法题,笔者过去这些年面试,至少遇到过七八次.其中更夸张的是曾经两天写了三次,上午YY,下午金山云,第二天快手.链表反转在各大高频题排名网站也长期占领前三.比如牛客网上这 ...
- python实现链表反转(转置)
python实现链表反转(转置) 链表是面试里面经常涉及到的考点,因为链表的结构相比于Hashmap.Hashtable.Concurrenthashmap或者图等数据结构简单许多,对于后者更多面试的 ...
- 每隔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 ...
- 数据结构1:单链表反转java代码解释
来源于尚硅谷的老师代码,只因其中有几行代码自己课上没听明白,课后自己整理了一下 首先完整代码如下: //将单链表反转 public static void reversetList(HeroNode ...
- bat面试题 python 单链表反转排序
单链表反转python实现 单链表的反转可以使用循环,也可以使用递归的方式 1.循环反转单链表
最新文章
- System_Recovery_21.0.3_62137_Multilingual_Product
- 【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 二维数据的 K-Means 聚类 ) ★
- svn修改提交路径_使用SVN钩子强制提交日志和限制提交文件类型
- 谋定智慧农业-农民丰收节·万祥军:京东共聚黑山县三方合力
- CodeForces 1131G. Most Dangerous Shark
- Dubbo管理控制台dubbo-admin搭建
- Visual C#.Net网络程序开发-Tcp篇(1)
- 类似腾讯手机管家应用android源码
- Incorrect string value: '\xE5\xA4\xA7\xE5\xB9\x85...' for column' name' at row 1的解决方法
- 只愿得一人心白首不分离
- LCD显示屏选购技巧是什么?
- 上亿海量数据处理方法
- linux卸载teamviewer,ubuntu 16.04 desktop + server LTS - TeamViewer 软件彻底卸载
- pytorch中保存、载入权重
- sql server中datename函数的使用
- 【STM32】获取STM32官方固件库
- 百度Apollo仿真仿真平台搭建-附1
- VS2019 .NetCore智能提示从英文变成中文设置
- 服务器镜像文件查看,查找镜像服务器地址
- 程序员多数性功能不行_1024,节日快乐!南京程序员绝不认输
热门文章
- 硬件基础 - MOS管
- 计算机运算法则图鉴,在西航 | 脑洞大开!四则运算的西航生活图鉴,各类等式出乎意料……...
- 渲染单色_单色设计红色
- ps学习日记-常用的分辨率设置
- python map函数详解
- PMO和项目经理必备的七大项目管理软技能(上篇)
- QT MSVC 编译器添加新类报错LNK2019 error LNK2019: unresolved external symbol public
- Spring中的事务控制学习中(转)
- 为什么不能随便叫别人领导
- 测试开发工程师常见面试题(随时更新)