复杂链表的复制
2016-03-29 22:52
127 查看
这道题目首先不管random指针,按照next指针把链表元素给复制出来。然后处理random指针,比较容易想到的想法是利用哈希思想(或者等价的map,set等stl容器),但这样的话需要辅助空间。
不需要辅助空间的方法,复制元素的时候把原始链表改成这样就可以了:
View Code
不需要辅助空间的方法,复制元素的时候把原始链表改成这样就可以了:
class Solution { public: RandomListNode* Clone(RandomListNode* pHead) { if(pHead==NULL) return NULL; RandomListNode* root=pHead; while(root) { RandomListNode* p=new RandomListNode(root->label); p->next=root->next; root->next=p; root=p->next; } root=pHead; while(root) { if(root->random!=NULL) root->next->random=root->random->next; root=root->next->next; } RandomListNode* result=pHead->next; RandomListNode* prev=result; root=pHead; while(root->next->next!=NULL) { root->next=prev->next; root=root->next; prev->next=prev->next->next; prev=prev->next; } root->next=NULL; return result; } };
View Code
相关文章推荐
- 第三百六十一天 how can I 坚持
- Android——滚动视图(ScrollView)图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟
- 软件开发中前期准备的重要性
- mysql别名
- JS函数实现基本计算器计算
- 黑马程序员—java基础复习—网络编程
- NYOJ-01串(dp&&规律)
- 一些可以使你感兴趣的c语言简单练习
- mysql绿色版安装使用配置教程?
- jQuery选择器
- 第5周项目3—时间类(2)
- 数据库DBO代码
- 复利计算5.0(改成Java版本)与 单元测试
- java的反射机制
- 验证ORACLE不同字符集中汉字占用的byte及NLS_LENGTH_SEMANTICS参数的影响
- web服务器必备软件整理
- InSAR学习(三)DInSAR基本原理
- 实验c++2-1(上机报告)
- 从01背包问题理解动态规划---初体验
- Dockerfile学习(二)