复制复杂链表
文章目录
一、题目
以示例1
为例展开分析
二、思路分析
如果只是简单的复制,那么很简单
但题目要求复制链表中的指针都不应指向原链表中的节点
这就要求我们需要malloc
出和原链表相同的节点
而我们能做到的只是将新的节点链接起来,至于像原链表那样链接方式,却无法做到,因为新的链表不知道random是第几位
我们需要原链表的一个映射,去找到那个关系
⛄️第一步代码:
struct Node* copyRandomList(struct Node* head) {
struct Node* cur = head;
while(cur)
{
struct Node* copy = (struct Node*)malloc(sizeof(struct Node));
copy->val = cur->val;
copy->next = cur->next;
cur->next = copy;
cur = copy->next;
}
}
我们发现copy
需要的random
就是上一个节点->random->next