PHP 演算法 複製複雜鍊錶的PHP實現

2021-09-08 05:21:41 字數 1550 閱讀 6469

複雜鍊錶的複製:

1.在舊鍊錶中每個結點的後面複製出乙個結點,隔代

2.把舊鍊錶的隨機指向部分,複製到新新增的結點上

3.把新結點從舊鍊錶中拆分出來成新鍊錶

1.linklist=head

while linklist!=null

node=new

node()

node->next=linklist->next

linklist->next=node

linklist=node->next

2.linklist=head

while listlink!=null

node=listlink->next

listlink->next->random=linklist->random!=null ? listlink->random->next : null

listlink=node->next

3.tmp=linklist->next

linklist->next=tmp->next

linklist=tmp

<?php

class

node }//

構造乙個複雜鍊錶

$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

)

//第二步

$temp=$linklist

;

while($temp!=null

)

//第三步

$newlist=$linklist->next;//

從第二個結點開始要

$temp=$newlist

;

while($temp->next!=null

)

return

$newlist

;}

object(node)#

1 (3) }}}

object(node)#

5 (3)

}}

PHP 演算法 複製複雜鍊錶的PHP實現

複雜鍊錶的複製 1.在舊鍊錶中每個結點的後面複製出乙個結點,隔代 2.把舊鍊錶的隨機指向部分,複製到新新增的結點上 3.把新結點從舊鍊錶中拆分出來成新鍊錶 1.linklist head while linklist null node new node node next linklist nex...

PHP 演算法 複製複雜鍊錶的PHP實現

複雜鍊錶的複製 1.在舊鍊錶中每個結點的後面複製出乙個結點,隔代 2.把舊鍊錶的隨機指向部分,複製到新新增的結點上 3.把新結點從舊鍊錶中拆分出來成新鍊錶 1.linklist head while linklist null node new node node next linklist nex...

複雜鍊錶的複製演算法

題目 請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個m pnext指標指向下乙個節點,還有乙個m psibiling指標指向鍊錶中的任意節點或者nullptr。節點的c 定義如下 struct co...