博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复杂链表的复制
阅读量:6481 次
发布时间:2019-06-23

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

这道题目首先不管random指针,按照next指针把链表元素给复制出来。然后处理random指针,比较容易想到的想法是利用哈希思想(或者等价的map,set等stl容器),但这样的话需要辅助空间。

不需要辅助空间的方法,复制元素的时候把原始链表改成这样就可以了:

然后修改新增元素的random指针,再把这个链表拆开,返回新链表。

1 class Solution { 2 public: 3     RandomListNode* Clone(RandomListNode* pHead) 4     { 5         if(pHead==NULL) 6             return NULL; 7         RandomListNode* root=pHead; 8         while(root) 9         {10             RandomListNode* p=new RandomListNode(root->label);11             p->next=root->next;12             root->next=p;13             root=p->next;14         }15         root=pHead;16         while(root)17         {18             if(root->random!=NULL)19                 root->next->random=root->random->next;20             root=root->next->next;21         }22         RandomListNode* result=pHead->next;23         RandomListNode* prev=result;24         root=pHead;25         while(root->next->next!=NULL)26         {27             root->next=prev->next;28             root=root->next;29             prev->next=prev->next->next;30             prev=prev->next;31         }32         root->next=NULL;33         return result;34     }35 };
View Code

 

转载于:https://www.cnblogs.com/vaecn/p/5335208.html

你可能感兴趣的文章
Linux经常使用命令(十六) - whereis
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
基于react的滑动图片验证码组件
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映
查看>>
生活杂事--度过十一中秋
查看>>
Pyrex也许是一个好东西
查看>>