[LeetCode]Copy List with Random Pointer
2013-11-20 14:08
597 查看
/** * 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) { // Note: The Solution object is instantiated only once and is reused by each test case. if(head == NULL) return NULL; //1. copy and insert RandomListNode* pCurNode = head; while(pCurNode != NULL) { //copy RandomListNode* tmp = new RandomListNode(pCurNode->label); //insert RandomListNode* pNextNode = pCurNode->next; pCurNode->next = tmp; tmp->next = pNextNode; pCurNode = pNextNode; } //2. set random pointer of copied node pCurNode = head; while(pCurNode != NULL) { if(pCurNode->random != NULL) pCurNode->next->random = pCurNode->random->next; else pCurNode->next->random = NULL; pCurNode = pCurNode->next->next; } //3. split these two list RandomListNode* newHead = head->next; pCurNode = head; while(pCurNode != NULL) { RandomListNode* pCopiedNode = pCurNode->next; pCurNode->next = pCurNode->next->next; if(pCurNode->next != NULL) pCopiedNode->next = pCurNode->next->next; else pCopiedNode->next = NULL; pCurNode = pCurNode->next; } return newHead; } };
相关文章推荐
- [LeetCode]138 Copy List with Random Pointer
- LeetCode | Copy List with Random Pointer
- Copy List with Random Pointer 复制有随机指针的链表@LeetCode
- LeetCode | Copy List with Random Pointer
- leetcode 138 —— Copy List with Random Pointer
- Leetcode:Copy List with Random Pointer
- [LeetCode]Copy List with Random Pointer
- LeetCode:Copy List with Random Pointer
- leetcode: Copy List with Random Pointer
- Leetcode: Copy List with Random Pointer
- LeetCode Copy List with Random Pointer
- leetcode_138 Copy List with Random Pointer
- Leetcode: Copy List With Random Pointer分析理解
- leetcode之Copy List with Random Pointer
- LeetCode:Copy List with Random Pointer
- **Leetcode_copy-list-with-random-pointer (c++ and python version)
- LeetCode Copy List with Random Pointer
- Leetcode Copy List with Random Pointer
- Copy List With Random Pointer (LeetCode)
- 【leetcode】Copy List with Random Pointer (hard)