• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP实现复制复杂链表的代码

php 搞代码 4年前 (2022-01-21) 21次浏览 已收录 0个评论

本篇文章给大家带来的内容是关于PHP实现复制复杂链表的代码,有一定的参考价值,有需要的朋友可以参考一下,

本文来*源gaodai^.ma#com搞#代!码网
搞gaodaima代码

希望对你有所帮助。

复杂链表的复制:
1.在旧链表中每个结点的后面复制出一个结点,隔代
2.把旧链表的随机指向部分,复制到新添加的结点上
3.把新结点从旧链表中拆分出来成新链表

1.linklist=headwhile linklist!=null    node=new Node()    node->next=linklist->next    linklist->next=node    linklist=node->next2.linklist=headwhile listlink!=null    node=listlink->next    listlink->next->random=linklist->random!=null  ? listlink->random->next : null    listlink=node->next3.tmp=linklist->nextlinklist->next=tmp->nextlinklist=tmp
<?phpclass Node{        public $data;        public $random;        public $next;        public function __construct($data=""){                $this->data=$data;        }   }//构造一个复杂链表$linkList=new Node();$linkList->next=null;$temp=$linkList;$node1=new Node("111");$temp->next=$node1;$temp=$node1;$node2=new Node("222");$temp->next=$node2;$temp=$node2;$node3=new Node("333");$node3->random=$node2; //node3又指向了node2$temp->next=$node3;$temp=$node3;var_dump($linkList);$cloneList=MyClone($linkList);var_dump($cloneList);//复制复杂链表function MyClone($linkList){        $linkList=$linkList->next;        //第一步        $temp=$linkList;        while($temp!=null){                $node=new Node($temp->data.'clone');                $node->next=$temp->next;//新结点的next指向当前结点的next                $temp->next=$node;//当前结点的next指向新结点                $temp=$node->next;//跳两级 跳过新复制的这个结点        }            //第二步        $temp=$linkList;        while($temp!=null){                $node=$temp->next;                //当前结点的下一级random指向 当前结点random的下一级                $temp->next->random=$temp->random!=null ? $temp->random->next : null;                $temp=$node->next;        }           //第三步        $newList=$linkList->next;//从第二个结点开始要        $temp=$newList;        while($temp->next!=null){                $node=$temp->next;//获取当前结点的next                $temp->next=$node->next;//当前结点的next指向 下一级的next , 这样就消掉了下一个                $temp=$node;//当前结点后移        }        return $newList;}
object(Node)#1 (3) {  ["data"]=>  string(0) ""  ["random"]=>  NULL  ["next"]=>  object(Node)#2 (3) {    ["data"]=>    string(3) "111"    ["random"]=>    NULL    ["next"]=>    object(Node)#3 (3) {      ["data"]=>      string(3) "222"      ["random"]=>      NULL      ["next"]=>      object(Node)#4 (3) {        ["data"]=>        string(3) "333"        ["random"]=>        *RECURSION*        ["next"]=>        NULL      }    }  }}object(Node)#5 (3) {  ["data"]=>  string(8) "111clone"  ["random"]=>  NULL  ["next"]=>  object(Node)#6 (3) {    ["data"]=>    string(8) "222clone"    ["random"]=>    NULL    ["next"]=>    object(Node)#7 (3) {      ["data"]=>      string(8) "333clone"      ["random"]=>      *RECURSION*      ["next"]=>      NULL    }  }}

相关推荐:

Java实现复杂链表的复制代码分享

php实现单链表的实例代码

以上就是PHP实现复制复杂链表的代码的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP实现复制复杂链表的代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址