复杂链表的复制

以下这个题目是我在剑指offer上面看到的,当时刚看题目我也没做出来。实在想不出来,看了题解后才做出来,为了加深印象,在博客中我再仔细做一遍,用c++ 代码实现。

题目描述:

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个指向链表中任意一个节点或NULL),返回结果为复制后复杂链表的head。

节点结构:

class Node
{
public:
  Node(int _val)//构造函数,初始化节点
  {
    this->val = _val;
    this->next = nullptr;
    this->random = nullptr;
  }

private:
  int val;
  Node* next;//指向下一个节点
  Node* random;//指向链表中任意一个节点或NULL

};

解题思路:

我们先不考虑random指针怎么指,把整个过程分解为简单问题来执行:第一步先复制原先的每个节点,原先每个节点的val值可以拿到吧,那我们在构造每个新节点时,只先考虑把val值赋值给新节点,next指针先指向原先节点的下一个节点,原先节点指向新节点,random指针先赋值为空;第二步再考虑r

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值