其他分享
首页 > 其他分享> > 【LeetCode.链表.138】复制复杂链表/复制带随机指针的链表,多图分析

【LeetCode.链表.138】复制复杂链表/复制带随机指针的链表,多图分析

作者:互联网

复制复杂链表


文章目录


一、题目

❄️题目指路:138. 复制带随机指针的链表 - 力扣(LeetCode) (leetcode-cn.com)

在这里插入图片描述

示例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

标签:Node,cur,next,链表,多图,复制,copy,struct
来源: https://blog.csdn.net/qq_53656490/article/details/120992186