题目:
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.
 1 /**
 2 * Definition for singly-linked list with a random pointer.
 3 * struct RandomListNode {
 4 *     int label;
 5 *     RandomListNode *next, *random;
 6 *     RandomListNode(int x) : label(x), next(NULL), random(NULL) {}
 7 * };
 8 */
 9 class Solution {
10 public:
11     RandomListNode *copyRandomList(RandomListNode *head) {
12         if(head == NULL) return NULL;
13         //将新节点复制到原来节点后面
14         RandomListNode *copy;
15         RandomListNode *p = head;
16         RandomListNode *tmp;
17         while(p!=NULL)
18         {
19             copy = new RandomListNode(p->label);
20             tmp = p->next;
21             p->next = copy;
22             copy->next = tmp;
23             p = tmp;
24         }
25         //将新结点与随机结点相连接
26         p = head;
27         copy = head->next;
28         while(p!=NULL && copy!=NULL)
29         {
30             copy->random = ((p->random)?p->random->next:NULL);
31             p = ((copy->next)?copy->next:NULL);
32             copy = ((p->next)?p->next:NULL);
33         }
34         //将新节点与原结点拆开
35         p = head;
36         head = copy = head->next;
37         while(p!=NULL && copy!=NULL)
38         {
39             p->next = ((copy->next)?copy->next:NULL);
40             p = ((p->next)?p->next:NULL);
41             copy->next = ((p)?p->next:NULL);
42             copy = ((copy->next)?copy->next:NULL);
43         }
44         return head;
45     }
46 };

转载于:https://www.cnblogs.com/dzy521/p/9144690.html

copy a random link相关推荐

  1. Bootstrap File Input 真正 解决跨域问题

    今天一个项目需要 做文件上传 ,图方便 就使用了Bootstrap File Input   插件 问题来了 文件放置服务器和 活动服务器 是分开的 于是涉及到了 一个ajax 跨域请求问题  后端使 ...

  2. 【数据竞赛】Kaggle神技:一项堪比Dropout的NN训练技巧!

    ↑↑↑关注后"星标"kaggle竞赛宝典 kaggle竞赛宝典 作者:杰少 Swap Noise: 一种论文中所没有的NN神技 01 背景 本文介绍一种论文中所没有,但是却效果极佳 ...

  3. 2叉树排序缺失元素查找

    为什么80%的码农都做不了架构师?>>>    问题 在一组相同类型的数据中(对象.数组.字符串.整形等任意类型的数据结构)请用时间空间最优的方式查找缺失的一项.例如有一组数据[&q ...

  4. GNU LGPL协议

    \qquad 下面是LGPL协议2.1版的完整协议文本: GNU LESSER GENERAL PUBLIC LICENSEVersion 2.1, February 1999Copyright (C ...

  5. JS红宝书·读书笔记

    JavaScript高级程序设计 花了半个多月的时间,终于又把"JS红宝书"又撸了一遍. 第一次读"JS红宝书"还是2015年初学JS的时候,那时候只是把语法部 ...

  6. mini-XML 中文文档

    FROM: http://blog.csdn.net/bluesonic/article/details/3887143#mxmlLoadFd Mini-XML 程序员开发手册, Version 2. ...

  7. minixml中文手册

    Mini-XML 程序员开发手册, Version 2.5 序言 本文结构 词法约定 缩略语 其他参考 法律信息 构建,安装,以及打包Mini-XML 编译 Mini-XML 使用 Visual C+ ...

  8. Mini-XML 程序员开发手册, Version 2.5(转)

    Mini-XML 程序员开发手册, Version 2.5 目录 中文翻译:Z.F , mail: zhfjyq@gmail.com ,http://blog.csdn.net/bluesonic 序 ...

  9. HCTF-2018-Official-Writeup

    转载至官方writeup Web Warmup web签到 首先打开然后看F12啦,注释里提示是source.php,php审计,问题出在 $_page = urldecode($page); $_p ...

最新文章

  1. 三代组装软件canu学习笔记
  2. Google Chrome 悄悄升级 WebGL 2.0 标准
  3. 使用scanf()函数接收带空格的字符串
  4. Java的知识点29—— 文件字符流、字节数组流
  5. Mr. Main and Windmills 模拟,计算几何(昆明)
  6. CentOS系统配置solr
  7. 使用literal语法格式化字符串
  8. Java设计模式(8)组合模式(Composite模式)
  9. ijkplayer 消息循环处理过程分析
  10. 3+1保障:高可用系统稳定性是如何炼成的?
  11. Excel用图标集展示数据
  12. 页面报错500是什么意思_解决方案:品牌备案后,上传产品报错5461,A+页面报错...
  13. MySQL自定义函数用法详解-复合结构自定义变量/流程控制
  14. layui select 默认选中
  15. 前端语音转文字实践总结
  16. 软件资源学生优惠合集
  17. 苹果cms设置本地播放器 ckplayer(版本:ckplayerx)
  18. python+cv2+pyzbar 二维码画框、角度
  19. 卸载程序时总是 显示“请等待当前程序完成卸载或更改”!
  20. 流放之路+连接服务器+未响应,流放之路链接服务器中就未响应

热门文章

  1. javaScript——内置函数1
  2. python图像下采样_[Python图像处理]十二.图像向下取样和向上取样
  3. 设计模式_3_建造者模式
  4. vb 根据pid获取句柄_C++中避免返回指向对象内部的句柄(handles)
  5. JavaScript高级之ES5 中的新增方法
  6. Java 关于类的专题
  7. LeetCode MySQL 1097. 游戏玩法分析 V
  8. LeetCode MySQL 619. 只出现一次的最大数字
  9. LeetCode 1049. 最后一块石头的重量 II(DP)
  10. LeetCode 1471. 数组中的 k 个最强值(排序)