数据结构-复制带随机指针的链表

本文介绍如何复制一个带有随机指针的链表。首先在原链表节点后新增拷贝节点,然后逐个复制随机指针,最后创建新链表连接拷贝节点。步骤包括基础拷贝、随机指针复制和新链表构建。
摘要由CSDN通过智能技术生成

问题描述:给一个单链表,每一个节点额外包含增加的随机指针,该指针可以指向链表中任意的节点或空节点。现在需要将随机指针的状态复制下来。

思路:

第一步:为了不改变原链表的结构,可以在每一个原节点后面新增加一个拷贝。

(copy->next=cur->next,cur->next=copy(尾插))

同时,为了方便下一次插入,每次复制完成之后,将cur指针向后移动两位到达下一个原节点处 。(cur=copy->next)

 

 第二步:做好基础准备后,可以开始进行随机指针的复制了。由于每一个节点的后一个都是其复制,所以随机指针的情况也是这样。(copy->random=cur->random->next)其中cur->random是原节点的下一个随机节点,加上next则是其复制,按照上面的拷贝思想,其正好对应原节点的复制的随机节点。(当然,当原节点的随机指针为空时,其复制节点理所应当的也为空

(copy->random=NULL))

 

 

第三步:创建一个新单链表&#x

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值