php链表用法实例分析
本文实例讲述了php链表用法。分享给大家供大家参考。具体如下:
这里简单介绍了php链表的基本用法,包括链表节点的创建、遍历、更新等操作。
<?php
/**
*@authorMzXy
*@copyright2011
*@paramPHP链表
*/
/**
*
*节点类
*/
classNode
{
private$Data;//节点数据
private$Next;//下一节点
publicfunctionsetData($value){
$this->Data=$value;
}
publicfunctionsetNext($value){
$this->Next=$value;
}
publicfunctiongetData(){
return$this->Data;
}
publicfunctiongetNext(){
return$this->Next;
}
publicfunction__construct($data,$next){
$this->setData($data);
$this->setNext($next);
}
}//功能类
classLinkList
{
private$header;//头节点
private$size;//长度
publicfunctiongetSize(){
$i=0;
$node=$this->header;
while($node->getNext()!=null)
{$i++;
$node=$node->getNext();
}
return$i;
}
publicfunctionsetHeader($value){
$this->header=$value;
}
publicfunctiongetHeader(){
return$this->header;
}
publicfunction__construct(){
header("content-type:text/html;charset=utf-8");
$this->setHeader(newNode(null,null));
}
/**
*@authorMzXy
*@param$data--要添加节点的数据
*
*/
publicfunctionadd($data)
{
$node=$this->header;
while($node->getNext()!=null)
{
$node=$node->getNext();
}
$node->setNext(newNode($data,null));
}
/**
*@authorMzXy
*@param$data--要移除节点的数据
*
*/
publicfunctionremoveAt($data)
{
$node=$this->header;
while($node->getData()!=$data)
{
$node=$node->getNext();
}
$node->setNext($node->getNext());
$node->setData($node->getNext()->getData());
}
/**
*@authorMzXy
*@param遍历
*
*/
publicfunctionget()
{
$node=$this->header;
if($node->getNext()==null){
print("数据集为空!");
return;
}
while($node->getNext()!=null)
{
print($node->getNext()->getData());
if($node->getNext()->getNext()==null){break;}
$node=$node->getNext();
}
}
/**
*@authorMzXy
*@param$data--要访问的节点的数据
*@param此方法只是演示不具有实际意义
*
*/
publicfunctiongetAt($data)
{
$node=$this->header->getNext();
if($node->getNext()==null){
print("数据集为空!");
return;
}
while($node->getData()!=$data)
{
if($node->getNext()==null){break;}
$node=$node->getNext();
}
return$node->getData();
}
/**
*@authorMzXy
*@param$value--需要更新的节点的原数据--$initial---更新后的数据
*
*/
publicfunctionupdate($initial,$value)
{
$node=$this->header->getNext();
if($node->getNext()==null){
print("数据集为空!");
return;
}
while($node->getData()!=$data)
{
if($node->getNext()==null){break;}
$node=$node->getNext();
}
$node->setData($initial);
}
}
?>
希望本文所述对大家的php程序设计有所帮助。