双向链表的反转(递归和迭代)

双向链表反转功能实现详解 在探讨数据结构时,双向链表作为一种基本的线性数据结构,拥有着独特的结构与操作方式。不同于单向链表,双向链表的每个节点除了含有指向下一节点的指针外,还包含一个指向前一节点的指针,这使得双向链表能够在两个方向上进行遍历。在双向链表的节点类中,数据域是存储节点信息的关键部分。数据域可以是任意类型,根据实际应用场景的不同,数据域的类型也会有所变化。例如,在处理整数数据时,数据域可能是int类型;在存储对象引用时,则可能是对象的指针或引用。int data;// 数据域,存储整型数据。 阅读详情

在网上查询许久没有找到好的双向链表的递归实现,所以自己写了一个,如有错误,虚心受教.

public DoubleNode noRecursionReverse(DoubleNode head) {
    DoubleNode prev = null;
    DoubleNode next = null;
    while (head != null) {
        next = head.next;
        head.next = prev;
        head.prev = next;
        prev = head;
        head = next;
    }
    return prev;
}

public DoubleNode recursionReverse(DoubleNode head) {
    if (head == null || head.next == null) {
        return head;
    }
    DoubleNode newHead = recursionReverse(head.next);
    DoubleNode tail = head.next.next;
    head.next.next = head;
    head.next.prev = tail;
    // 处理头节点的特殊情况
    if (head.prev == null) {
        head.prev = head.next;
        head.next = null;
    }
    return newHead;
}

实现双向链表反转 基于linkedList实现自己的双向链表反转。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 立即下载

相关推荐

Hive SQL零基础到精通:100道练习题+答案,SQL能力快速提升

我将以我15年架构与开发的经验,带领大家从零基础到精通,通过精心设计的100道练习题及其详解,系统地、深度地掌握Hive SQL的核心精髓。它可以将结构化的数据文件映射为一张数据库表,并提供了一套类SQL的查询语言——HiveQL(简称HQL),允许熟悉SQL的用户直接查询存储在HDFS上的海量数据。它将Job描绘为DAG(有向无环图),允许更灵活的任务编排,避免不必要的中间落盘,可以复用容器,从而大幅降低延迟。希望你以此文为起点,在广阔的大数据世界里继续遨游,成为一名真正的数据高手!

架构师的AI之路,分享AI应用开发架构的学习与实践。 797

数据结构学习系列之双向链表的翻转

【代码】数据结构学习系列之双向链表的翻转。

qq_41878292的博客 472

从SolidWorks到Simulink:手把手教你用URDF文件搭建六轴机械臂仿真模型(含STL文件配置避坑)

本文详细介绍了从SolidWorks到Simulink的六轴机械臂URDF仿真全流程,包括URDF文件导出、Simscape模型生成与调试、动力学参数获取与验证等关键步骤。重点解决了STL文件配置、关节接口设置等工程化难题,帮助开发者高效构建可控制的数字孪生体。通过实战案例和优化技巧,提升机械臂仿真效率与准确性。

weixin_26812607的博客 265

双向链表反转

本文中的双向链表,具有一个首指针h,但没有尾指针,不是循环链表。链表反转时,要做两件事情,一是将数据部分的pre指针和next指针交换值;二是将h指针指向反转后的头数据节点指针,并将新链表的尾数据节点指针的next(即原链表头数据指针的next)置空。 上代码: DLinkedNode.h #ifndef DLINKEDNODE_H_INCLUDED #define DLINKEDNODE...

Sunshine 2352

FC游戏金手指代码大全:亲测可用指南与内存修改原理

在计算机和游戏开发领域,内存修改是一项基础而强大的技术,它通过直接读写程序运行时内存中的数据,改变软件的行为和状态。其核心原理在于理解进程的内存地址空间布局,定位存储关键游戏变量(如生命值、金币数)的特定地址,并注入或锁定目标数值。这项技术的工程价值在于,它不仅能用于游戏辅助,更是软件逆向工程、漏洞分析和调试的重要实践手段。在怀旧游戏和模拟器场景中,内存修改以“金手指”或“作弊码”的形式广泛应用,帮助玩家自定义游戏体验。本文将聚焦FC(红白机)游戏,深入解析Game Genie码和Raw码两种主流金手指格式

weixin_30780649的博客 782

进程间通信的七种方法实战演示!值得收藏!

线程和进程间的通讯(Inter-Process Communication, IPC)是操作系统中的一个重要概念,用于实现不同进程或同一进程中的不同线程之间的数据交换和协调。以下是几个常见的进程间通信的方式:管道、消息队列、共享内存、信号、套接字、信号量、文件映射

十年饮冰,难凉热血,保持热爱,奔赴星海! 2816

反转单向和双向链表

【题目】 分别实现反转单向链表和反转双向链表的函数。 【要求】 如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1)。 【代码】 //反转单向链表 public Node reverseList(Node head){ Node pre=null;//当前结点的前结点 Node next=null;//当前结点的后结点 ...

不远远方 2555

别再纠结高边低边了!用TI BQ76952设计两轮车BMS,手把手教你选对架构(附电路图)

本文深度解析基于TI BQ76952芯片的电动两轮车BMS设计策略,涵盖高边/低边驱动选择、四种基础架构的电流路径分析及选型决策矩阵。通过实战案例分享,帮助工程师优化BMS架构,提升系统可靠性和成本效益,特别适合电摩和共享单车应用场景。

weixin_42665255的博客 513

Activiti-Explorer 用户名与密码

账号 密码 角色 kermit kermit admin gonzo gonzo manager fozzie fozzie user 作者:jiankunking 出处:http://blog.youkuaiyun.com/jiankunking ...

weixin_34161064的博客 623

DM9000有线网卡驱动编写

DM9000有线网卡驱动编写 1.DM9000简介   DM9000 是一款完全集成的、性价比高、引脚数少、带有通用处理器接口的单芯片快速以太网控制器。 自 带一个 10/100M PHY 和 4K 双字的 SRAM ,DM9000A 为适应各种处理器提供了 8 位、16 位数据接口访问 内部存储器,DM9000 拥有自动协商功能,DM9000 特性如下:   1.集成自适应 10/100M 收发器。   2.内置 16k 字节的 SRAM。   3.支持硬件帧校验。   4.兼容 3.3V 和 5.0V

weixin_44453694的博客 4672

56、宇宙微波背景辐射(CMB)望远镜及光学系统解析

本文详细解析了宇宙微波背景辐射(CMB)望远镜及其光学系统,重点介绍了交叉德拉贡系统的结构特点、偏振测量误差及其控制、以及大型地面望远镜如ACT和SPT的设计与对比。同时,总结了不同光学系统和探测器阵列的优劣势,并展望了未来发展方向,旨在为CMB研究提供更高效的工具和技术支持。

f9g0h的博客 242

java单向链表和双向链表的反转(迭代和递归)

单向链表反转(逆置) //定义单链表的节点 public class ListNode { int data; ListNode next; public ListNode(int val) { this.data = val; } } 方法一:迭代法(遍历) //单向链表反转,迭代反转 public ListNode reverse1(ListNode head) { //参数传入链表的头指针(不带头结点) if(head==null || head.next==null) ret

华达州的博客 887

基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95

三个文件搞定YOLOv8【训练】【验证】【推理】🚀🚀🚀

Coding... 2万+

剑指offer反转链表(C++实现|测试用例|迭代法和递归法)

方法1:迭代法 代码: #include<iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; class Solution { public: ListNode* reverseList(ListNode* head) { ListNode*cur = NULL; ListNode*pre = head;

jusu10的博客 252

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

反转链表系列问题

此时 cur 需要做如下操作:把 c , d, e 反转后的头节点获取到,假设为 pre , 在上图中,pre 就是 e 节点,然后 cur 再做如下操作。本题核心依然是反转链表,只是增加了一些变量来记录需要反转链表的头位置和结尾位置,不过需要注意的是,本题的链表开始位置是从 1 开始,所以,如果。该函数表示:反转以 head 为头的链表的前 n 个节点,并返回反转后的链表头节点。节点连接起来,所以递归过程中,需要一直记录反转的部分链表的后继节点,设置一个全局变量。个节点,并返回反转后的头节点,当。

Practitioner 274

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

206. 反转链表

反转一个单链表。 示例: 输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL 输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 迭代法: /** * Definition for singly-linked list. * struct ListNode {...

码奴生来就只知道前进 442

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

代码题(4)— 反转链表、二叉搜索树与双向链表

1、题目:反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...

dbsggal90047018的博客 172

链表反转(Java)

基本思想: 反转入口从head.next开始,通过递归,如果当前结点有下一个结点,就递归调用反转函数,直到到最后一个结点时,让头结点指向这个结点。其他的结点:让后一个结点指向前一个结点 代码: //用于反转整个链表 public void reverse(){ if (isEmpty()){ return; } reverse(head.next); } //反转每一个结点,参数curr是当前被反转的

qq_54802338的博客 3597

链表反转面试题:单链表与双向链表的不同解题思路对比

2. 遍历链表,在每次循环中,先保存 curr 的下一个节点 next_node,然后将 curr 的 next 指针指向 prev,实现局部反转;3. 当 curr 为 None 时,说明遍历结束,此时需要更新链表的头节点为原链表的尾节点(即最后一个 curr 指向的节点的 prev 节点)。3. 将原链表头节点的下一个节点的 next 指针指向头节点,并将头节点的 next 指针置为 None,完成整个链表的反转。给定一个双向链表的头节点 head,将该链表反转,并返回反转后链表的头节点。

2501_91651594的博客 382

以反转链表为例的链表初始化

#include <iostream> //迭代法 class Node{ public: int value; Node* next; Node(int data){ this->value = data; } } ; Node* reverseNode(Node* head) { Node* pre = head; Node* cur = NULL; while(pre!=NULL) { Node* tem = pre->next.

weixin_51650301的博客 913

【高频题-1】206. 反转链表

题目 代码 执行用时:40 ms, 在所有 Python3 提交中击败了54.80% 的用户 内存消耗:16.1 MB, 在所有 Python3 提交中击败了45.45% 的用户 通过测试用例:28 / 28 class Solution: def reverseList(self, head: ListNode) -> ListNode: ans=None pre=head while head: if pre==hea

... 308

手写双向链表+反转单向链表

一些总结 因为.next可以移动指针,所以某些for循环条件不需用index 双向链表有双向指针,需要相互指定 要巧用“假设索引为0”来进行微调代码 因为LinkedList的设计是有first和last头尾节点,所以在根据index增删的时候需要对头尾节点先进行判断 因此在LinkeList源码中会事先定义addFirst addLast removeFirst removeLast方法以便调用 因为有first和last头尾节点是否null的问题,所以在设计双向链表时需要考虑判断0个元素(remove

ZJH 1044

206反转链表

1:递归方法 1--》2--》3 到 3--》2--》1返回末尾3节点,3节点next置为2,2节点next置为null;2节点next置为1,1节点next置为null public ListNode reverseList(ListNode head){ if(head==null||head.next==null){ return head; } ListNode p =reverseList(head.next);

qq_34514046的博客 214

promotion for 35 years coder-Day01-链表反转

#include <iostream> #include <string> struct T_LstNode; typedef struct T_LstNode { int value; T_LstNode *pNext; T_LstNode(int v, T_LstNode *next) { value = v; pNext = next; } }LstNode; //递归方式 LstNode *li...

dannygaobo的专栏 125

《算法系列》之链表

我们平时会发现如果一道题如果涉及数据结构,那么他的算法思路一般相对其它同等难度的题要简单,其实链表也一样。

小夏陌的博客 626

反转链表(迭代,递归实现)

在到达基准情况之前,p->next以堆栈的方式存储,到达基准情况后先执行if语句,依次出栈执行递归语句下面的statement。这里主要需要理解递归;

m0_74183164的博客 206
上一篇: 寻找数组的局部最小值
下一篇: 双向链表的快速排序
R7CKB
博客等级 码龄5年 5粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R7CKB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值