• 复杂链表的复制(python)


    一:问题描述
    输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

    二,分析

    先举个栗子,有如下链表,每个节点除了指向下个节点的next指针,还有一个random指针,其中,3的random指针指向他自己

    我们先做一个指针,叫kk,让他指向头节点

    kk=pHead

    如果kk不为空,就复制一个出来,叫他node

    node=RandomListNode(kk.label)

    用next指针连接起node和kk以及kk.next

    node.next=kk.next

    kk.next=node

     下一个

    kk=node.next

    直到复制了链表中的所有结点,并用next将他们连接起来

     第二步,复制random指针

    1结点的random指向5

    复制出来的1的random就该指向复制出来的5

    此时,复制出来的5是原来的5的下一项

    kk.random.next=kk.next.random

    one by one直到全部复制完成

     第三步,分离两个链表

    再做两个新的指针,一个叫ee,指向新链表的表头,就放那不动,等着输出

    一个叫nn,他负责遍历新链表,而kk负责遍历旧的链表

    让旧的指向旧的,新的指向新的

    kk.next=kk.next.next

    nn.next=nn.next.next

    最后输出ee

     

     结束

    三,代码

     

  • 相关阅读:
    JavaScript----特效代码
    坑!vue.js在ios9中失效
    MySQL的ibdata1文件占用过大
    Ubuntu搭建Gitlab服务器
    Logstash+Kibana部署配置
    Kafka+Zookeeper集群搭建
    ES5.0集群搭建
    Kibana使用高德地图
    Zabbix安装客户端agent(windows和Centos7)
    Centos/Rhel7部署Zabbix监控(部署篇之服务器篇)
  • 原文地址:https://www.cnblogs.com/buyaodong/p/13183407.html
Copyright © 2020-2023  润新知