复杂链表的复制
来源:互联网 发布:网络信息保密协议 编辑:程序博客网 时间:2024/06/07 05:49
问题描述:
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.
解题思路:
将1->2->3->4->NULL先复制为1->1->2->2->3->3->4->4->NULL,这样就会有如下关系式:
pCur->next->random = pCur->random->next;
/** * 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) { if (head == NULL) return NULL; RandomListNode *pCur = head, *tmp, *new_head; while(pCur != NULL)/*复制结点*/ { tmp = new RandomListNode(pCur->label); tmp->next = pCur->next; pCur->next = tmp; pCur = tmp->next; } pCur = head; /* 注意调用空指针的next指针,会报错*/ while(pCur != NULL)/*复制任意指针*/ { if (pCur->random != NULL) pCur->next->random = pCur->random->next; else pCur->next->random = NULL; pCur = pCur->next->next; } pCur = head; tmp = new_head = head->next; while(tmp != NULL)/* 将链表拆分为两个链表 */ { pCur->next = tmp->next; if(pCur->next == NULL) break; else tmp->next = pCur->next->next; pCur = pCur->next; tmp = tmp->next; } return new_head; }};
0 0
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复制复杂的链表
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- shell的条件与控制
- 性能调优攻略
- 编程范式思考问题
- 4种kill某个用户所有进程的方法
- uva-CALCULATOR CONUNDRUM
- 复杂链表的复制
- 对象的拷贝1(不完整,慎入)
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。
- C++MFC编程笔记day03 MFC工具栏、状态栏、视图窗口
- cubieboard2 android内核与源码编译、内核配置
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-1.用户界面和布局)
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法
- poj 3311Hie with the Pie(解题的两种方法)状态压缩dp,或全排列。
- 编译错误unknown type name xxx