138.复制带随机指针的链表

xiaoxiao2022-06-11  25

给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。

要求返回这个链表的深度拷贝。 

/**  * 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) return NULL;         RandomListNode *cur = head;         while (cur) {             RandomListNode *node = new RandomListNode(cur->label);             node->next = cur->next;             cur->next = node;             cur = node->next;         }         cur = head;         while (cur) {             if (cur->random) {                 cur->next->random = cur->random->next;             }             cur = cur->next->next;         }         cur = head;         RandomListNode *res = head->next;         while (cur) {             RandomListNode *tmp = cur->next;             cur->next = tmp->next;             if(tmp->next) tmp->next = tmp->next->next;             cur = cur->next;         }         return res;     } };

转载请注明原文地址: https://www.6miu.com/read-4930646.html

最新回复(0)