Copy List with Random Pointer
来源:互联网 发布:淘宝体验中心 编辑:程序博客网 时间:2024/06/10 15:13
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.
/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label; * RandomListNode *next, *random; * RandomListNode(int x) : label(x), next(NULL), random(NULL) {} * }; */class Solution {public: RandomListNode *copyRandomList(RandomListNode *head) {RandomListNode *pHead=head; if(pHead==NULL) { return NULL; } if(pHead->next==NULL) { RandomListNode *pHead_copy=new RandomListNode(pHead->label); pHead_copy->next=NULL;if(pHead->random!=NULL){ pHead_copy->random=pHead_copy;}return pHead_copy; } //第一步 在每个结点的后面插入一个copy for(RandomListNode *pNode=pHead;pNode!=NULL;pNode=pNode->next->next) { RandomListNode *pNodeCopy=new RandomListNode(0); pNodeCopy->label=pNode->label; pNodeCopy->next=pNode->next; pNodeCopy->random=NULL; pNode->next=pNodeCopy; } //第二步 '遍历'扩充后的链表,设置copy结点的pOther for(RandomListNode *pNode=pHead;pNode!=NULL;pNode=pNode->next->next) { if(pNode->random) pNode->next->random=pNode->random->next; else pNode->next->random=NULL; } //第三步 拆分链表 RandomListNode *pHead_copy=pHead->next; for(RandomListNode *pNode=pHead;pNode!=NULL;) { RandomListNode *pTmp=pNode->next; if(pTmp) { pNode->next=pNode->next->next; } pNode=pTmp; } return pHead_copy; }};
0 0
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- hdu 1823(二维线段树入门题)
- 我们为什么需要DTO(数据传输对象)
- XenServer 虚拟机备份脚本
- NGUI查找子节点下的所有组件并且循环遍历销毁
- Angularjs表单的使用
- Copy List with Random Pointer
- 【Cocos2dx-3.x】通信协议之HTTP通信协议篇
- 多线程sem_init
- android 图片浏览器 demo
- android 过USB-IF测试注意事项及修改
- 数据结构之二叉树练习
- 婴幼儿食谱二十个月孩子
- 面试中如何剔除“鱼目混珠”程序员(转)
- 花生壳tomcat搭建并发布到外网访问,类似映射软件对比