【剑指Offer】复杂链表的复制
发布日期:2022-02-10 08:55:14 浏览次数:11 分类:技术文章

本文共 1124 字,大约阅读时间需要 3 分钟。

题目

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。

思路

拿到题的思路就是hash表+两次遍历,但看到书上有更能节省空间的办法后就直接写了书上的。

翻了个错误就是奇偶链表节点的处理上,还是不能拿个整数做%2操作来判断,需要指针处理,因为最后一个空节点不复制。

总的来说就是三个方法顺序操作一下。

代码

/*// Definition for a Node.class Node {public:
int val;
Node* next;
Node* random;
Node(int _val) {
val = _val;
next = NULL;
random = NULL;
}};*/class Solution {public:
Node* copyRandomList(Node* head) {
if(head == NULL){
return NULL;
}
copyList(head);
changeptr(head);
return GetNewList(head);
}
void copyList(Node* head){
Node* p = head;
while(p != NULL){
Node* pclone = new Node(p->val);
Node* p1 = p->next;
p->next = pclone;
pclone->next = p1;
p=pclone->next;
}
}
void changeptr(Node* head){
Node* p = head;
while(p != NULL){
Node* pnew = p->next;
if(p->random != NULL){
pnew->random = p->random->next;
}
p=pnew->next;
}
}
Node* GetNewList(Node* head){
Node* p = head;
Node* pnewhead = NULL;
Node* pnew = NULL;
pnewhead = p->next;
pnew = p->next;
p->next = pnewhead->next;
p = p->next;
while(p != NULL){
pnew->next = p->next;
pnew = p->next;
p->next = pnew->next;
p=p->next;
}
return pnewhead;
}};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/105699205 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】二叉搜索树与双向链表
下一篇:【剑指Offer】顺时针打印矩阵

发表评论

最新留言

表示我来过!
[***.240.166.169]2023年02月27日 13时13分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

python图像识别数字_Python图像识别+KNN求解数独的实现 2019-08-28 18:34:11
已知空间中的三点 求三角形面积_高考数学复习突破策略,空间几何体的结构及其表面积、体积... 2019-08-28 18:34:10
python3知识点汇总_Python常用知识点汇总 2019-08-28 18:34:09
想学python怎么学习_怎么学习Python爬虫技术 想学Python如何入门 2019-08-28 18:34:09
python的if和else的缩进问题_Python if else对缩进的要求 2019-08-28 18:34:08
python中label函数_Python之sklearn:LabelEncoder函数简介(编码与编码还原)、使用方法、具体案例之详细攻略... 2019-08-28 18:34:08
ad中按钮开关的符号_收藏:电路图形符号大全!!! 2019-08-28 18:34:07
python按比例生成数据组_python,批量生成指定格式的审核数据(传输参数格式为数组时)... 2019-08-28 18:34:06
python有免费版吗_python下载_python3.5.1 免费版下载 - 全方位下载 2019-08-28 18:34:06
angular高级编程第3版下载_UNIX系统编程宝典,每一本都值得程序员珍藏 2019-08-28 18:34:05
python调用训练好的模型_TensorFlow 调用预训练好的模型—— Python 实现 2019-08-28 18:34:05
safari快捷图标不见了_桌面图标不见了怎么办?这里有妙招 2019-08-28 18:34:05
并联串联混合的电压和电流_初中物理归纳并联和串联的区别 2019-08-28 18:34:04
grub4dos命令引导自定义映像_已有Ubuntu与Win10,纯命令行VHD装Windows8.1 2019-08-28 18:34:04
python xlrd模块_python 项目中xlrd模块读取数据样例 2019-08-28 18:34:03
python代码注释有几种方式_python的注释有哪几种 2019-08-28 18:34:03
python demo函数用法_Python常见的pandas用法demo示例 2019-08-28 18:34:02
pythonfor循环嵌套_Python for循环嵌套如何优化? 2019-08-28 18:34:02
python判断是否包含某数字_python如何判断数组里是否有某个数字 2019-08-28 18:34:01
python 获取本地视频信息_python获取视频文件信息 2019-08-28 18:34:01