|
導讀網(wǎng)頁的本質(zhì)就是超級文本標記語言,通過結(jié)合使用其他的Web技術(shù)(如:腳本語言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強大的網(wǎng)頁。因而,超級文本標記語言是萬維網(wǎng)(Web)編程的基礎(chǔ),也就是說萬維網(wǎng)是建立... 網(wǎng)頁的本質(zhì)就是超級文本標記語言,通過結(jié)合使用其他的Web技術(shù)(如:腳本語言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強大的網(wǎng)頁。因而,超級文本標記語言是萬維網(wǎng)(Web)編程的基礎(chǔ),也就是說萬維網(wǎng)是建立在超文本基礎(chǔ)之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家?guī)淼膬?nèi)容是關(guān)于php如何實現(xiàn)找出帶環(huán)鏈表的環(huán)的入口結(jié)點(代碼實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。給一個鏈表,若其中包含環(huán),請找出該鏈表的環(huán)的入口結(jié)點,否則,輸出null slow fast
while fast!=null && fast->next!=null
slow=slow->next
fast=fast->next->next
if slow==fast
fast=head
while slow!=fast
slow=slow->next
fast=fast->next
if slow==fast
return slow
return null<?php
class Node{
public $data;
public $next;
public function __construct($data=""){
$this->data=$data;
}
}
//構(gòu)造一個帶環(huán)的鏈表
$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");
$temp->next=$node3;
$temp=$node3;
$node4=new Node("444");
$temp->next=$node4;
$node4->next=$node2;//尾結(jié)點指向第二個結(jié)點
function EntryNodeOfLoop($pHead){
$slow=$pHead;
$fast=$pHead;
while($fast!=null && $fast->next!=null){
$slow=$slow->next;//慢指針走一步
$fast=$fast->next->next;//快指針走兩步
//快慢指針環(huán)內(nèi)相遇
if($slow==$fast){
//快指針回到頭結(jié)點
$fast=$pHead;
//同一速度再同時走
while($slow!=$fast){
$slow=$slow->next;
$fast=$fast->next;
}
//兩個相遇的點一定是環(huán)的入口
if($slow==$fast){
return $fast;
}
}
}
}
var_dump($linkList);
$result=EntryNodeOfLoop($linkList);
var_dump($result);object(Node)#1 (2) {
["data"]=> string(0) ""
["next"]=> object(Node)#2 (2) {
["data"]=> string(3) "111"
["next"]=> object(Node)#3 (2) {
["data"]=> string(3) "222"
["next"]=> object(Node)#4 (2) {
["data"]=> string(3) "333"
["next"]=> object(Node)#5 (2) {
["data"]=> string(3) "444"
["next"]=>
*RECURSION*
}
}
}
}
}object(Node)#3 (2) {
["data"]=> string(3) "222"
["next"]=> object(Node)#4 (2) {
["data"]=> string(3) "333"
["next"]=> object(Node)#5 (2) {
["data"]=> string(3) "444"
["next"]=>
*RECURSION*
}
}
}相關(guān)推薦: PHP實現(xiàn)找出鏈表中環(huán)的入口節(jié)點 以上就是php如何實現(xiàn)找出帶環(huán)鏈表的環(huán)的入口結(jié)點(代碼實例)的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章! 網(wǎng)站建設(shè)是一個廣義的術(shù)語,涵蓋了許多不同的技能和學科中所使用的生產(chǎn)和維護的網(wǎng)站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!