面试题35. 复杂链表的复制
时间:2020-05-19
本文章向大家介绍面试题35. 复杂链表的复制,主要包括面试题35. 复杂链表的复制使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
面试题35. 复杂链表的复制
1 class Solution { 2 public: 3 Node* copyRandomList(Node* head) 4 { 5 if (head == NULL) 6 { 7 return head; 8 } 9 Node *cur = head; 10 Node *copy = NULL; 11 Node *temp = NULL; 12 13 while (cur != NULL) 14 { 15 temp = cur->next; //保存原结点的下一个结点 16 copy = new Node(cur->val); //创建新结点 17 copy->next = cur->next; //复制结点的下一个结点为原结点下一个结点 18 cur->next = copy; //原结点下一个结点是复制结点 19 cur = temp; //跳到下一个原结点继续遍历 20 } 21 cur = head; 22 copy = NULL; 23 // while (cur != NULL) 24 // { 25 // copy = cur->next->next; //原结点下一个结点 26 // //当前复制结点,找到下一个复制结点 27 // cur->next->next = (copy != NULL)? copy->next:NULL; 28 // //当前复制结点为当前原结点的自由结点的下一个结点 A-a-B-b-C-c-null; 29 // cur->next->random = (cur->random != NULL)? cur->random->next:NULL; 30 // cur = copy; 31 // } 32 while(cur != NULL) 33 { 34 copy = cur->next; 35 if(cur->random) 36 copy->random = cur->random->next; 37 else 38 copy->random = NULL; 39 cur=copy->next; 40 } 41 cur = head; 42 copy = head->next; 43 Node *copy_cur = head->next; 44 while(cur != NULL) 45 { 46 cur->next = cur->next->next; 47 cur = cur->next; 48 if (copy_cur->next != NULL) 49 { 50 copy_cur->next = copy_cur->next->next; 51 copy_cur = copy_cur->next; 52 } 53 } 54 return copy; 55 } 56 };
原文地址:https://www.cnblogs.com/Tavi/p/12915698.html
- 2929: [Poi1999]洞穴攀行
- SQL Server 执行计划缓存
- 1081: [SCOI2005]超级格雷码
- 1715: [Usaco2006 Dec]Wormholes 虫洞
- 博弈论入门之斐波那契博弈
- 3018: [Usaco2012 Nov]Distant Pastures
- 1755: [Usaco2005 qua]Bank Interest
- SQL Server 重新组织生成索引
- 3386/1752: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
- 洛谷P2197 nim游戏(Nim游戏)
- SQL Server 索引和表体系结构(聚集索引+非聚集索引)
- 3384/1750: [Usaco2004 Nov]Apple Catching 接苹果
- 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
- 1455: 罗马游戏
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 分享一个Qt写的SMTP邮件客户端(库)
- mysql学习笔记
- MapReduce的常见输入格式之NlineInputFormat
- MapReduce的常见输入格式之KeyValueTextInputFormat
- MapReduce之 FileInputFormat的切片策略(默认)
- MapReduce之片和块的关系
- MapReduce的常见输入格式之CombineTextInputFormat
- MapReduce之Job提交流程
- MapReduce之自定义InputFormat
- MapReduce之MapTask工作机制
- 数据链路层的三个基本问题
- DEBUG ArrayList
- 【PAT甲级】1002 A+B for Polynomials (25分)
- c/c++补完计划(一): 指针常量和常量指针
- 从0到1开发测试平台(六)增加登录接口