复杂链表的深度拷贝

news2024/11/25 3:48:05

给定一个链表,每个结点包含一个额外增加的随机指针,该指针可以指向链表中的任何结点 或空结点。 要求返回这个链表的深度拷贝。

在这里插入图片描述
我们想要拷贝这个指针就要考虑到
1.不仅仅拷贝出来的指针next是相同的,rondom也要相同
2.拷贝完后不改变原链表

如果我们只是遍历链表然后,然后赋值它的值,然后再一样的next起来,他的rondom是没有办法拷贝过去的
那么去哦们就有了这样的一个方法:

在这里插入图片描述
1、把链表节点拷贝到原节点后

struct Node*cur=head;
    while(cur)
    {
       struct Node*next=cur->next;//保存cur->next
        struct Node*copy=(struct Node*)malloc(sizeof(struct Node));
        copy->val=cur->val;
        //插入
        cur->next=copy;
        copy->next=next;
        //往后走
        cur=next;
    }

2、利用每个拷贝节点都在拷贝节点之后的特殊位置,就可以利用原节点把拷贝节点的rondom链接起来

cur=head;
    while(cur)
    {
       struct Node* copy=cur->next;
        if(cur->random==NULL)
        {
        copy->random=NULL;
        }else
        {
        copy->random=cur->random->next;
        }
        cur=copy->next;

       
    }

3.把拷贝节点从原节点结下来,拼成一个新节点,然后恢复原节点的摸样
在这里插入图片描述

cur=head;
        struct Node *copyhead=NULL;
        struct Node *copytail=NULL;
    while(cur)
    {
        struct Node *copy=cur->next;
        struct Node *next=copy->next;

        if(copytail==NULL)
        {
            copyhead=copytail=copy;
        }else
        {
            copytail->next=copy;
            copytail=copytail->next;
        }
        //恢复原链表
        cur->next=next;
        cur=next;
    
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1049788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧安防视频监控技术+AI智能分析算法助力美好乡村建设

上期我们聊到AI智能视频监控技术如何助力美好乡村建设?的相关方案,收到了很多粉丝的讨论与关注,视频监控只是乡村建设极其基础的一环,基于视频监控平台的AI智能算法,将人工智能融合到安防监控之中,才能让乡…

设计模式3、工厂方法模式 Factory Method

解释说明:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类 抽象工厂(AbstractFactory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法…

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP)

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP) 1、时间:2009-2018年 2、指标: 汇率、入境旅游收入(万美元)、国内旅游收入(亿元&#xff0…

REASUNOS瑞森半导体-MOS管系列在服务器电源上的应用

一、前言 服务器电源是指使用在服务器上的电源(POWER),它和PC电源一样,都是一种开关电源,指能够将交流电转换为服务器所需直流电的电源。 服务器电源按照标准可以分为ATX电源和SSI电源等。ATX标准使用较为普遍&…

DAP-seq在植物转录因子的应用案例助你打通研究思路

众所周知,转录因子 (Transcription Factors, TFs)是指能够以序列特异性方式结合DNA并且调节转录的蛋白质。TF与特异性DNA序列结合调节转录,同时会和其它功能蛋白结合调控下游基因的转录和翻译过程,也会和增强子等其它顺式作用元件结合&#x…

MySQL基础篇-基本sql语句

目录 1.SQL分类 2.SQL-DDL 2.1 数据库操作 查询 创建 删除 使用某个数据库 2.2 数据表操作 创建表 查询表 修改表 3.SQL-DML(增删改) 3.1 插入 3.2 修改 3.3 删除 4.SQL-DQL(查) 4.1 基础查询 4.2 条件查询 4.3 聚合函数查询 4.4 分组查询 4.5 排序查询 …

在EXCEL中构建加载项之创建加载项的目的及规范要求

【分享成果,随喜正能量】一句南无阿弥陀佛,本是释迦牟尼佛所证的无上正等正觉法,洒在娑婆世界的众生海中,只为末世众生能够以信愿之心抓住此救命稻草,要知道今世人此生的处境,可能只剩这道要么极乐要么三涂…

C++之 lambda表达式

lambda表达式 lambda表达式概念lambda表达式语法lambda表达式底层原理 lambda表达式概念 我们在以往需要对某些数据进行排序时,比如一个数组,我们就需要用到sort()函数: int main() {int arr[] { 3,1,2,4,8,7,5,9 };//升序sort(arr, arr …

day36-xml

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

使用 KerasCV YOLOv8 进行物体检测--附完整实现源码

YOLO 目标检测模型已应用于无数应用,从监控系统到自动驾驶车辆。但是,当在 KerasCV 框架下将 YOLOv8 的这种能力配对时会发生什么呢?最近,KerasCV 将著名的 YOLOv8 检测模型集成到其库中。在本文中,我们将探讨如何使用自定义数据集微调 YOLOv8。在此过程中,我们还将涵盖以…

wireshark of tshark tools v3.4.0版本 支持json

tshark(1) Install tshark (Wireshark) Ver.3.4.0 on CentOS7 --It must be "ps", "text", "pdml", "psml" or "fields". TCP 协议中的三次握手和四次挥手是 TCP 连接建立和关闭的过程。 三次握手 客户端向服务器发送 SYN…

Java自学(二)

目录 一、数组逆置(临时变量法) 二、基本类型和引用类型传参的区别 一、数组逆置(临时变量法) 二、基本类型和引用类型传参的区别 基本类型传参,形参一般不会改变实参。 形参是实参的一份数据拷贝,改变形…

Android12之解封装NuMediaExtractor::setDataSource过程(四十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Python之网络协议

一、网络通信协议 国际标准化组织(ISO,即International Organization for Standardization)定义了网络通信协议的基本框架,被称为OSI(Open System Interconnect,即开放系统互联)模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时…

十五、异常(3)

本章概要 捕获所有异常 多重捕获栈轨迹重新抛出异常精准的重新抛出异常异常链 捕获所有异常 可以只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类 Exception,就可以做到这一点(事实上还有其他的基类,但 Exception 是所…

中秋节快乐

中秋节快乐,国庆节快乐

61从零开始学Java之处理大数字相关的类有哪些?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们知道,在现实世界里,实际上数字是有无穷个的,就比如0和1之间&a…

不同材质地下管线的地质雷达响应特征分析

不同材质地下管线的地质雷达响应特征分析 前言 建立了不同材质地下管线(铸铁管线(PEC)、混凝土管线、PVC/PE管线)的二维模型,进行二维地质雷达正演模拟,分析不同材质管线的地质雷达响应特征。 文章目录 …

[chrome devtools]Sources面板

Source面板左侧部分内容: 下面解释每一项: Page:显示当前页面所有已加载的资源Filesystem:将本地代码拖进来,作为一个workspace,可以直接在这里面编辑代码,然后页面就可以直接看到效果&#xf…

【计算机网络】详解TCP协议(上) TCP协议头结构 | ACK确认应答 | 超时重传机制

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525; 给大家跳段…