力扣:随即指针138. 复制带随机指针的链表

复制带随机指针的链表


OJ链接

分析:
该题的大致题意就是有一个带随机指针的链表,复制这个链表但是不能指向原链表的节点,所以每一个节点都要复制一遍
大神思路:
ps:我是学来的

在这里插入图片描述
上代码:

struct Node* copyRandomList(struct Node* head)
{//1.在原链表每个节点的后面复制一个节点struct Node* cur = head;while(cur){//插入struct Node*copy = (struct Node*)malloc(sizeof(struct Node));if(copy == NULL){perror("malloc\n");return NULL;}copy->val = cur->val;struct Node* next = cur->next;cur->next = copy;copy->next = next;//迭代cur = next;} //2.处理randomcur = 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(copyhead == NULL){copyhead = copytail = copy;}else{copytail->next = copy;//尾插copytail = copytail->next;//迭代 }//删除:恢复原链表//free(cur->next);//此处不用freecur->next = next;cur = cur->next;//迭代}return copyhead;
}

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

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

相关文章

TuyaOS开发学习笔记(1)——NB-IoT开发搭建环境、编译烧写(MT2625)

一、搭建环境 1.1 官方资料 TuyaOS 1.2 安装VMware 官网下载:https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0 百度网盘:https://pan.baidu.com/s/1oN7H81GV0g6cD9zsydg6vg 提取…

Android 中SettingsActivity(PreferenceFragmentCompat)的简单使用

如果你需要一个简单的APP设置,可以使用sharedPreferences进行存储,我们可以借助AndroidStudio快速创建一个用于设置的Activity,其实它是继承PreferenceFragmentCompat,存储方式用的就是sharedPreferences,只是帮我们节…

科技资讯|微软获得AI双肩包专利,Find My防丢背包大火

根据美国商标和专利局(USPTO)近日公示的清单,微软于今年 5 月提交了一项智能双肩包专利,其亮点在于整合了 AI 技术,可以识别佩戴者周围环境、自动响应用户聊天请求、访问基于云端的信息、以及和其它设备交互。 在此附…

创建ffmpeg vs2019工程

0 写在前面 本文主要参考链接:https://www.cnblogs.com/suiyek/p/15669562.html 感谢作者的付出; 1 目录结构 2 下载yasm和nasm 如果自己在安装VS2019等IDE的时候已经安装了它们,则不用再单独进行安装,比如我这边已经安装了&a…

wget 命令的使用:HTTP文件下载、FTP文件下载--九五小庞

1. wget 命令简介与安装wget是用于在命令行终端下载网络文件的开源免费的命令工具,支持 HTTP/HTTPS、FTP/FTPS 协议的下载。wget 与 curl 相似,curl 可以理解为是一个浏览器,wget 则可以理解是迅雷。wget 意为 World Wide Web 与 get 的结合。…

【VirtualBox】安装Ubuntu

一、新建虚拟系统 点击新建 输入名称,点击下一步 配置内存大小和处理器,点击下一步 选择不添加虚拟硬盘,点击下一步 点击完成 点击继续 二、修改虚拟机硬件配置 选择虚拟机,点击 “设置” 进入 “系统 -> 主板” 页面&…

Day02 - Java基础语法

1. 注释 注释是对代码的解释和说明文字。 Java中的注释分为三种: 单行注释: // 这是单行注释文字 多行注释: /* 这是多行注释文字 这是多行注释文字 这是多行注释文字 */ 注意:多行注释不能嵌套使用。 文档注释(…

ZZULIOJ 1164: 字符串加密,Java

ZZULIOJ 1164: 字符串加密,Java 题目描述 输入一串字符(长度不超过100)和一个正整数k,将其中的英文字母加密并输出加密后的字符串,非英文字母不变。加密思想:将每个字母c加一个序数k,即用它后…

【计算机组成 课程笔记】1.2 冯·诺伊曼结构

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 1 - 2 - 102-冯诺依曼结构的要点(13-59--)_哔哩哔哩_bilibili 现代的计算机形态各异,但究其本质,几乎全部采用了冯诺依曼结构。要了解计算机,首先要知道…

数据挖掘导论学习笔记1(第1 、2章)

参考:https://blog.csdn.net/u013232035/article/details/48281659?spm1001.2014.3001.5506 和《数据挖掘导论》学习笔记(第1-2章)_时机性样本_schdut的博客-CSDN博客 第1章 绪论 数据挖掘是一种技术,它将传统的数据分析方法…

14 mysql bit/json/enum/set 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 bit/json/enum/set 类类型的相关…

android:新建工程文件介绍

一、前言当我们新建一个app时会呈现出固定的工程文件,这篇文章介绍新建工程里的文件。 二、介绍 Structure:就是你选择哪个页面就会显示那个页面的结构,就比如说我选择的是MainActivity他就会显示这个页面所使用的方法。 1-2:是android自动生…

环上计数+计数转概率:ABC318EX

https://atcoder.jp/contests/abc318/tasks/abc318_h 先转为概率, f i f_i fi​ 表示 i i i 个点两人都AC的概率, g i g_i gi​ 表示恰好一个人AC的概率。 两个人都AC,只能为全部自环, f i 1 i ! f_i\frac 1 {i!} fi​i!1​ …

C++/C# : C#和C++的不同

C#和C是两种不同的编程语言,虽然在某些方面它们具有相似之处,但它们也有一些明显的不同点,如下: C是一种静态类型编程语言,而C#是一种动态类型编程语言。 C允许开发者手动管理内存的分配和释放,但是C#的垃…

Navicat15天试用期过期解决办法

如果你是windows电脑,发现过期了先把Nvaicat关掉,按照以下步骤可以恢复到15天试用。 1.注册表输入regedit winR打开注册表 2.搜索输入HKEY_CURRENT_USER\Software\PremiumSoft\Navicat 删除Registration15XCS和Update这两个文件夹。 3.搜索HKEY_CURRE…

【Jenkins打包服务,Dockerfile报错:manifest for java : 8 not fourd】

1、问题描述 Jenkins打包服务运行dockerfile里的FROM java:8报错manifest for java : 8 not fourd Caused by: com.spotify. docker.client.exceptions.DockerException: manifest for java:8 not found2、解决方法 在网上查找许多方法后得出这是由于Docker官方已经弃用java…

【kubernetes】k8s部署APISIX及在KubeSphere使用APISIX

Apache APISIX https://apisix.apache.org/ 功能比nginx-ingress更强 本文采用2.5.0版本 https://apisix.apache.org/zh/docs/apisix/2.15/getting-started/ 概述内容来源于官方,学习于马士兵云原生课程 概述 Apache APISIX 是什么? Apache APISIX 是 …

r 安装源码包 安装本地r包

总结一下手动安装R包 - 简书 (jianshu.com)https://www.jianshu.com/p/2a7a36414734 #BiocManager::install("simplifyEnrichment") #BiocManager::install("EnsDb.Hsapiens.v86")#下载包 之后 手动安装 #install.packages("~/datasets/EnsDb.Hsapien…

前端入门到入土?

文章目录 前言http和https的区别,https加密的原理是?区别https的加密原理 TCP为什么要三次握手?proxy代理的原理?内存泄漏?什么是内存泄漏?为什么会有内存泄漏?内存泄漏的情况?如何防…

PAT 1163 Dijkstra Sequence

个人学习记录,代码难免不尽人意。 Dijkstra’s algorithm is one of the very famous greedy algorithms. It is used for solving the single source shortest path problem which gives the shortest paths from one particular source vertex to all the other v…