题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空

/*
struct RandomListNode {
int label;
struct RandomListNode *next, *random;
RandomListNode(int x) :
label(x), next(NULL), random(NULL) {
}
};
*/
class Solution {
public:
RandomListNode* Clone(RandomListNode* pHead)
{
if(pHead == nullptr)
{
return nullptr;
}
//将链表每个结点复制一个克隆,放在该节点的后一位
RandomListNode *pNode = pHead;
while(pNode != nullptr)
{
RandomListNode *pClone = new RandomListNode(pNode->label);
pClone->next = pNode->next;
pClone->random = nullptr; pNode->next = pClone;
pNode = pClone->next;
}
//设置克隆结点的random
pNode = pHead;
while(pNode != nullptr)
{
RandomListNode *pClone = pNode->next;
if(pNode->random != nullptr)
{
pClone->random = pNode->random->next;
}
pNode = pClone->next;
}
//将链表拆分
pNode = pHead;
RandomListNode *pCloneHead = pHead->next;
while(pNode->next != nullptr)
{
RandomListNode *ptmp = pNode->next;
pNode->next = ptmp->next;
pNode = ptmp;
}
return pCloneHead;
}
};

  

最新文章

  1. IOS第一天多线程-04GCD通信
  2. CDH 的Cloudera Manager免费与收费版的对比表
  3. How to crack interviews ...
  4. birt 批改导出的文件名【转】
  5. Windows下查询进程、端口
  6. cmake 手册系列
  7. JQUERY1.9学习笔记 之基本过滤器(一) 动态选择器
  8. Mschart应用之曲线图表spline
  9. CentOS上编译安装Git
  10. Integer比较
  11. Win7 IE11无法打开的可能解决办法
  12. nginx https配置后无法访问,可能防火墙在捣鬼
  13. springmvc+mybatis环境搭建
  14. springboot项目部署云服务器
  15. AI 可视化
  16. Linux的LiveCd与CD、DVD版
  17. python并发编程(并发与并行,同步和异步,阻塞与非阻塞)
  18. centos7下安装docker(12.3容器之间的连通性)
  19. oracle 之 连接查询
  20. Le Chapitre VII

热门文章

  1. [编程基础] Python数据生成库Faker总结
  2. [C++标准模板库:自修教程与参考手册]关于deque
  3. 通过rpm安装postgresql-9.6无法远程连接的问题
  4. 区块链特辑——solidity语言基础(七)
  5. while2.c程序
  6. 腾讯出品小程序自动化测试框架【Minium】系列(二)项目配置及测试套件使用说明
  7. Python TensorFlow深度学习回归代码:DNNRegressor
  8. Windows Server 2016 安装AD和Exchange
  9. 国际财务系统基于ShardingSphere的数据分片和一主多从实践
  10. 树莓派4B—LCD触摸屏和硬件串口配置