【剑指Offer】复杂链表的复制
来源:互联网 发布:传智播客java基础视频 编辑:程序博客网 时间:2024/06/06 01:24
- 题目描述:
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
- 代码:
/*struct RandomListNode { int label; struct RandomListNode *next, *random; RandomListNode(int x) : label(x), next(NULL), random(NULL) { }};*/void CloneNodes(RandomListNode* pHead){ RandomListNode* pNode = pHead; while (pNode != NULL){ RandomListNode* pCloned = new RandomListNode(1); pCloned->label = pNode->label; pCloned->next = pNode->next; pCloned->random = NULL; pNode->next = pCloned; pNode = pCloned->next; }}void ConnectRandomNodes(RandomListNode* pHead){ RandomListNode* pNode = pHead; while (pNode != NULL){ RandomListNode* pCloned = pNode->next; if (pNode->random != NULL){ pCloned->random = pNode->random->next; } pNode = pCloned->next; }}RandomListNode* ReconnectNodes(RandomListNode* pHead){ RandomListNode* pNode = pHead; RandomListNode* pClonedHead = NULL; RandomListNode* pClonedNode = NULL; if (pNode != NULL){ pClonedHead = pClonedNode = pNode->next; pNode->next = pClonedNode->next; pNode = pNode->next; } while (pNode != NULL){ pClonedNode->next = pNode->next; pClonedNode = pClonedNode->next; pNode->next = pClonedNode->next; pNode = pNode->next; } return pClonedHead;}RandomListNode* Clone(RandomListNode* pHead){ CloneNodes(pHead); ConnectRandomNodes(pHead); return ReconnectNodes(pHead);}
0 0
- 【剑指offer】复杂链表的复制
- 剑指offer--复杂链表的复制
- 《剑指offer》复杂链表的复制
- 剑指offer:复杂链表的复制
- 剑指offer - 复杂链表的复制
- 剑指Offer--复杂链表的复制
- 剑指offer:复杂链表的复制
- 【剑指offer】复杂链表的复制
- 剑指offer-复杂链表的复制
- 剑指offer:复杂链表的复制
- 剑指offer:复杂链表的复制
- [剑指offer]复杂链表的复制
- 【剑指offer】复杂链表的复制
- 剑指offer|复杂链表的复制
- 《剑指offer》复杂链表的复制
- 剑指Offer:复杂链表的复制
- 剑指offer 复杂链表的复制
- 剑指offer-复杂链表的复制
- 基于docker的caffe环境搭建与使用示例
- 时间复杂度和空间复杂度详解
- CAS与SSO
- C# 特性(Attribute)
- HTTP中Get与Post的区别
- 【剑指Offer】复杂链表的复制
- NSWOJ1204 士兵杀敌(一)(树状数组)
- HDFS数据存储和删除
- javascript中使用带有方法的自定义构造函数
- 地理空间数据格式——OGC简单要素标准(WKT/WKB)
- android studio 导入github项目需要修改gradle信息
- Android 生命周期
- Linux下nginx安装
- oracle ----自定义异常