知识屋:更实用的电脑技术知识网站
所在位置:首页 > 编程技术 > PHP编程

php实现单链表的实例代码

发布时间:2013-04-01 13:17:08作者:知识屋


复制代码代码如下:

<?php

 

//链表节点 
class node { 
public $id; //节点id 
public $name; //节点名称 
public $next; //下一节点 

public function __construct($id, $name) { 
$this->id = $id; 
$this->name = $name; 
$this->next = null; 

}

//单链表 
class singelLinkList { 
private $header; //链表头节点 

//构造方法 
public function __construct($id = null, $name = null) { 
$this->header = new node ( $id, $name, null ); 


//获取链表长度 
public function getLinkLength() { 
$i = 0; 
$current = $this->header; 
while ( $current->next != null ) { 
$i ++; 
$current = $current->next; 

return $i; 


//添加节点数据 
public function addLink($node) { 
$current = $this->header; 
while ( $current->next != null ) { 
if ($current->next->id > $node->id) { 
break; 

$current = $current->next; 

$node->next = $current->next; 
$current->next = $node; 


//删除链表节点 
public function delLink($id) { 
$current = $this->header; 
$flag = false; 
while ( $current->next != null ) { 
if ($current->next->id == $id) { 
$flag = true; 
break; 

$current = $current->next; 

if ($flag) { 
$current->next = $current->next->next; 
} else { 
echo "未找到id=" . $id . "的节点!<br>"; 



//获取链表 
public function getLinkList() { 
$current = $this->header; 
if ($current->next == null) { 
echo ("链表为空!"); 
return; 

while ( $current->next != null ) { 
echo 'id:' . $current->next->id . ' name:' . $current->next->name . "<br>"; 
if ($current->next->next == null) { 
break; 

$current = $current->next; 



//获取节点名字 
public function getLinkNameById($id) { 
$current = $this->header; 
if ($current->next == null) { 
echo "链表为空!"; 
return; 

while ( $current->next != null ) { 
if ($current->id == $id) { 
break; 

$current = $current->next; 

return $current->name; 


//更新节点名称 
public function updateLink($id, $name) { 
$current = $this->header; 
if ($current->next == null) { 
echo "链表为空!"; 
return; 

while ( $current->next != null ) { 
if ($current->id == $id) { 
break; 

$current = $current->next; 

return $current->name = $name; 

}

$lists = new singelLinkList (); 
$lists->addLink ( new node ( 5, 'eeeeee' ) ); 
$lists->addLink ( new node ( 1, 'aaaaaa' ) ); 
$lists->addLink ( new node ( 6, 'ffffff' ) ); 
$lists->addLink ( new node ( 4, 'dddddd' ) ); 
$lists->addLink ( new node ( 3, 'cccccc' ) ); 
$lists->addLink ( new node ( 2, 'bbbbbb' ) ); 
$lists->getLinkList (); 
echo "<br>-----------删除节点--------------<br>"; 
$lists->delLink ( 5 ); 
$lists->getLinkList ();

echo "<br>-----------更新节点名称--------------<br>"; 
$lists->updateLink ( 3, "222222" ); 
$lists->getLinkList ();

echo "<br>-----------获取节点名称--------------<br>"; 
echo $lists->getLinkNameById ( 5 );

echo "<br>-----------获取链表长度--------------<br>"; 
echo $lists->getLinkLength (); 
?>


(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜