138.随机链表的复制

news2024/11/25 15:00:12

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/**
 * Definition for a Node.
 * struct Node {
 *     int val;
 *     struct Node *next;
 *     struct Node *random;
 * };
 */
typedef struct Node Node;
struct Node* copyRandomList(struct Node* head) {
	Node* cur=head;
    //拷贝节点插入到原节点后面
    while(cur)
    {
        Node* copy=(Node*)malloc(sizeof(Node));
        copy->val=cur->val;

        copy->next=cur->next;
        cur->next=copy;

        cur=copy->next;

    }
    //链接random
    cur=head;
    while(cur)
    {
        Node* copy=cur->next;
        if(cur->random==NULL)
        {
            copy->random=NULL;
        }
        else
        {
            copy->random=cur->random->next;
        }
        cur=copy->next;
    }
    //放入新链表中
    Node* copyHead=NULL,*copyTail=NULL;
    cur=head;
    while(cur)
    {
        Node* copy=cur->next;

        if(copyTail == NULL)
        {
            copyHead=copyTail=copy;
        }
        else
        {
            copyTail->next=copy;
            copyTail=copyTail->next;
        }
        cur=copy->next;
    }
    return copyHead;
	
}

总体思路是:
先将拷贝节点插入原节点的后面然后让random指向该指向的位置,创建新链表把拷贝节点放入新链表中。
在这里插入图片描述
创建拷贝节点,把每个原节点的拷贝节点放到原节点的后面。用malloc函数创建一个新节点,让copy里面的值等于cur里面的值,然后进行单链表的插入就可以了。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这里就是这个代码的核心了。
创建临时变量copy,头节点为cur从头遍历把cur的next当作新复制的节点也就是copy。如果cur的random指向NULL,那么复制节点copy的random也指向NULL。另一种情况是cur的rondom指向下一个cur,那么copy的random也将指向下一个copy的random。

在这里插入图片描述
最后将拷贝节点放入一个新链表中。

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

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

相关文章

产业项目招商活动会议课程报名签到h5小程序pc开源版开发

产业项目招商活动会议课程报名签到h5小程序pc开源版开发 一个集PC和移动端功能于一体的解决方案,线上线下进行服务,围绕 活动报名、在线课程、项目大厅、线下签到、会员系统等。为商会提供了更加便捷高效的管理方式,提升了商会活动和项目的组…

IaC实战指南:DevOps的自动化基石

基础设施即代码(Infrastructure as Code,IaC)是指利用脚本、配置或编程语言创建和维护基础设施的一组实践和流程。通过IaC,我们可以轻松测试各个组件、实现所需的功能并在最小化停机时间的前提下进行扩展。更值得一提的是&#xf…

学习通下载PDF资源

今天突然发现,学习通的pdf资源居然是没有下载入口的,这整的我想cv一下我的作业都搞不了,于是我一怒之下,怒了一下。 可以看到学习通的pdf资源是内嵌在网页的,阅读起来很不方便,虽然他内置了阅读器&#xf…

游泳耳机哪个牌子好性价比高?优选四大品质卓越品牌,诚挚推荐

随着科技的日新月异,游泳与音乐的融合已不再是遥不可及的梦想,一款性价比高的游泳耳机成为了许多游泳爱好者提升运动体验、激发运动热情的必备工具。可面对市场上种类繁多、价格各异的游泳耳机品牌,如何在确保高品质的同时,寻觅到…

使用antiSMASH数据库及软件分析微生物组

Introduction 上次简要介绍过了微生物组中生物合成基因簇(BGCs)分析,这次具体讲解使用antiSMASH数据库及软件分析的流程。 antiSMASH(antibiotics & Secondary Metabolite Analysis Shell)是一个用于识别和分析微…

解决“您的连接不是私密连接”

目录 那么为什么会出现这样提示呢 https访问有什么不同 将http访问更改为https访问 当您在浏览网页时,遇到“您的连接不是私密连接”的提示,这通常表示浏览器认为您的连接不够安全。这是因为浏览器无法信任网站使用的SSL证书,或者网站没有…

分布式光纤测温DTS的测温范围是多少?

分布式光纤测温DTS的测温范围不仅仅取决于光缆的感温能力,还受到多种复杂因素的影响。尽管高温光缆可以耐高温,低温光缆可以耐低温,甚至镀金光缆能够耐受高达700摄氏度的极高温度,然而,这些因素并不能完全解释测温范围…

【源码】[第二版]亲测完美双端获取通讯录、相册、短信定位源码

这套跟前面发的那套差不多,UI不一样而已。这套带了配套视频搭建教程,省的有些人问怎么搭建。 这套只能用HB打包,别问能不能获取苹果,ios短信谁也获取不了,ios相册的话自己研究下HB开权限。 还是推荐这套直接反编译改…

重大消息!软考高级论文单考,综合和案例连考

依据辽宁省信息技术教育中心(辽宁省软考办)发布《关于2024年上半年计算机技术与软件专业技术资格(水平)考试批次安排的通知》可知,2024年上半年软考有如下调整: 1.软考高级考试中,综合知识和案例分析连考(…

性能测试 | 性能工具你用对了吗?

导读 要对客户端应用程序进行性能测试,需要了解用户场景和性能目标,选择合适的工具或方法来衡量和改进性能。其中涉及的性能指标有很多,如cpu使用率、内存、磁盘IO,相对应的性能观察工具也层出不穷,面对这些工具我们该…

24_Scala集合Map

文章目录 Scala集合Map1.构建Map2.增删改查3.Map的get操作细节 Scala集合Map –默认immutable –概念和Java一致 1.构建Map –创建kv键值对 && kv键值对的表达 –创建immutable map –创建mutable map //1.1 构建一个kv键值对 val kv "a" -> 1 print…

嵌入式Linux开发如何查看应用所链接的动态库

在开发中我们常常需要查看一个应用究竟链接了哪些对应的动态库 桌面linux的使用方法不赘述,网上资料有很多,对于嵌入式linux开发中,我们在ubuntu中使用ldd 是不行的 应该使用

全面升级企业网络安全 迈入SASE新时代

随着数字化业务、云计算、物联网和人工智能等技术的飞速发展,企业的业务部署环境日渐多样化,企业数据的存储由传统的数据中心向云端和SaaS迁移。远程移动设备办公模式的普及,企业多分支机构的加速设立,也使得企业业务系统的用户范…

数据结构-线性表-应用题-2.2-14

1&#xff09;算法基本设计思想&#xff1a; 2&#xff09;c语言描述&#xff1a; #define INT_MAX 0X7FFFFFFF int abs_(int a) {//绝对值if(a<0) return -a;else return a; } bool min(int a,int b,int c){if(a<b&&a<c) return true;else return false; } …

【Kali Linux工具篇】使用Aircrack-ng破解wifi密码

前期准备 1、一个无线网卡 2、密钥爆破字典 实站过程 1、设置wlan为监听模式 airmon-ng start wlan0 #开启网卡wlan0监听模式 iwconfig #查看网卡状态&#xff0c;发现wlan0mon&#xff0c;表示已开启成功2、探测附近WiFi airdump-ng wlan0monBSSID 代表…

遥感+大数据为智慧无人农场按下“倍速键”

春回大地万象“耕”新&#xff0c;在襄阳市襄州区张家集镇近2000亩小麦绿意盎然、勃勃生机。 湖北绿神农业科技有限公司的生产经理王真指着监控室的电脑屏幕&#xff0c;告诉记者在与珈和科技合作开发的农田遥感监测平台上各类农田数据一目了然&#xff0c;为实现农业智能化管理…

await执行顺序

用一个简单的例子来说明&#xff0c;await到底在等待什么 求代码的打印顺序 function testAsy(x) {return new Promise((resolve) > {setTimeout(() > {resolve(x);}, 3000);}); } async function testAwt() {console.log("async开始执行");// 最先打印let r…

vue的css深度选择器 deep /deep/

作用及概念 当 <style> 标签有 scoped 属性时&#xff0c;它的 CSS 只作用于当前组件中的元素&#xff0c;父组件的样式将不会渗透到子组件。在vue中是这样描述的&#xff1a; 处于 scoped 样式中的选择器如果想要做更“深度”的选择&#xff0c;也即&#xff1a;影响到子…

【web网页制作】html+css旅游家乡河南开封主题网页制作(4页面)【附源码】

HTMLCSS家乡河南主题网页目录 &#x1f354;涉及知识&#x1f964;写在前面&#x1f367;一、网页主题&#x1f333;二、页面效果Page1 首页Page2 开封游玩Page 3 开封美食Page4 留言 &#x1f308; 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 &#x1f40b;四…

手拿滑块撕瑞数 我叫超弟你记住!!什么腾讯滑块、数美、阿里通通拿下!最新版2024.5.8号

本文章非标题党&#xff0c;可提供主流验证码解决方案及成品、补环境框架、逆向教学 不论你是逆向小白、亦或是需求方都可通过本文章各取所需&#xff01;&#xff01; 废话不多说&#xff0c;老规矩&#xff0c;附上腾讯旗下验证码程序运行图&#xff0c;附程序运行时间 &…