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

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

内容导读

收集整理的这篇技术教程文章主要介绍了PHP实现复制复杂链表的代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2589字,纯文字阅读大概需要4分钟

内容图文

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

复杂链表的复制:
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实现复制复杂链表的代码的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP实现复制复杂链表的代码全部内容,希望文章能够帮你解决PHP实现复制复杂链表的代码所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com