您好,登錄后才能下訂單哦!
這篇文章主要介紹“php中鏈表的詳細介紹”,在日常操作中,相信很多人在php中鏈表的詳細介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php中鏈表的詳細介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
鏈表:是由一系列節點構成的數據結構。
每個節點包含兩個部分:一個是存儲數據的數據域;一個是存儲下一個節點的地址的指針域。
以下是本人用PHP實現的一個簡單的鏈表案例,僅供學習,請多多指教。
<?php
/*
節點類
**/
class listnode
{
public $id;//節點ID
public $name;//節點名稱
public $next;//下一個節點
//節點構造函數
public function __construct($id,$name)
{
$this->id=$id;
$this->name=$name;
$this->next=null;
}
}
/*
鏈表類
**/
class linklist
{
private $header;
//鏈表構造函數
public function __construct($id=null,$name=null)
{
$this->header=new listnode($id,$name);
}
//增加節點
public function add_list_node($id,$name)
{
$node=new listnode($id,$name);
$tmp=$this->header;
$exists=false;
while($tmp->next!==null)
{
if($tmp->next->id == $node->id)
{
$exists=true;
break;
}
if($tmp->next->id > $node->id )
{
break;
}
$tmp=$tmp->next;
}
if(!$exists)
{
$node->next=$tmp->next;
$tmp->next=$node;
}
else
{
echo '節點ID不能中復';
}
}
//輸出鏈表
public function display()
{
$tmp=$this->header;
if($tmp->next===null)
{
echo '鏈表為空!';
return ;
}
while($tmp->next!==null)
{
echo 'id:'.$tmp->next->id.' name:'.$tmp->next->name.'-->';
$tmp=$tmp->next;
}
}
//查找節點
public function find($id)
{
$tmp=$this->header;
if($tmp->next===null)
{
echo '鏈表為空,沒有找到節點<br/>';
}
while($tmp->next!==null)
{
if($tmp->next->id=$id)
{
return $tmp->next;
}
$tmp=$tmp->next;
}
}
//刪除節點
public function delnode($id)
{
$tmp=$this->header;
if($tmp->next===null)
{
echo '鏈表為空!<br/>';
return ;
}
while($tmp->next!==null)
{
if($tmp->next->id==$id)
{
$tmp->next=$tmp->next->next;
break;
}
$tmp=$tmp->next;
}
}
//更新節點NAME
public function updatenode($id,$name)
{
$tmp=$this->header;
if($tmp->next===null)
{
$node=new listnode($id,$name);
$node->next=$tmp->next;
$tmp->next=$node;
}
$flag=false;
while($tmp->next!==null)
{
if($tmp->next->id==$id)
{
$tmp->next->name=$name;
$flag=true;
break;
}
$tmp=$tmp->next;
}
if(!$flag)
{
$node=new listnode($id,$name);
$node->next=$tmp->next;
$tmp->next=$node;
}
}
}
header('content-type:text/html;charset=utf-8');
$linklist=new linklist();
$linklist->display();
echo '<br/>';
$linklist->updatenode(9,'節點9');
echo '<br/>';
$linklist->display();
echo '<br/>';
$linklist->add_list_node(1,'節點1');
$linklist->display();
echo '<br/>';
$linklist->add_list_node(2,'節點2');
$linklist->add_list_node(3,'節點3');
$linklist->add_list_node(4,'節點4');
$linklist->add_list_node(5,'節點5');
$linklist->add_list_node(6,'節點6');
$linklist->display();
$linkl=$linklist->find(1);
echo '<br/>';
echo $linkl->id.' name:'.$linkl->name;
$linklist->delnode(3);
echo '<br/>';
$linklist->display();
echo '<br/>';
$linklist->add_list_node(3,'節點3');
echo '<br/>';
$linklist->display();
$linklist->add_list_node(8,'節點8');
echo '<br/>';
$linklist->display();
$linklist->add_list_node(7,'節點7');
echo '<br/>';
$linklist->display();
$linklist->delnode(8);
echo '<br/>';
$linklist->display();
echo '<br/>';
$linklist->updatenode(9,'節點9');
echo '<br/>';
$linklist->display();
echo '<br/>';
?>
到此,關于“php中鏈表的詳細介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。