|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家帶來的內容是關于PHP實現復制復雜鏈表的代碼,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。 復雜鏈表的復制:
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{
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
}
}
}相關推薦: 以上就是PHP實現復制復雜鏈表的代碼的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!