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