class Solution {//原地复制
public:
Node* copyRandomList(Node* head) {
if(head==NULL)return head;
Node* p = head;
while (p != NULL) {
Node* tmp = new Node(p->val);
tmp->next = p->next;
p->next = tmp;
p=tmp->next;
}
for (Node* q = head; q != NULL; q = q->next->next) {
if(q->random!=NULL)
q->next->random = q->random->next;
else
q->next->random = NULL;
}
p = head;
Node* t = p->next;
Node* head1 = p->next;
while (p != NULL) {
p->next = t->next;
p = t->next;
if (p != NULL) {
t->next = p->next;
t = p->next;
}
else
t->next = NULL;
}
return head1;
}
};
剑指 Offer 35. 复杂链表的复制
最新推荐文章于 2024-07-13 16:00:03 发布