php中链表的详细介绍
admin
2023-06-26 12:02:33
0

链表:是由一系列节点构成的数据结构。

每个节点包含两个部分:一个是存储数据的数据域;一个是存储下一个节点的地址的指针域。

以下是本人用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 '链表为空,没有找到节点
';

}

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 '链表为空!
';

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 '
';

$linklist->updatenode(9,'节点9');

echo '
';

$linklist->display();

echo '
';

$linklist->add_list_node(1,'节点1');

$linklist->display();

echo '
';

$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 '
';

echo $linkl->id.'  name:'.$linkl->name;

$linklist->delnode(3);

echo '
';

$linklist->display();

echo '
';

$linklist->add_list_node(3,'节点3');

echo '
';

$linklist->display();

$linklist->add_list_node(8,'节点8');

echo '
';

$linklist->display();

$linklist->add_list_node(7,'节点7');

echo '
';

$linklist->display();

$linklist->delnode(8);

echo '
';

$linklist->display();

echo '
';

$linklist->updatenode(9,'节点9');

echo '
';

$linklist->display();

echo '
';

?>

相关内容

热门资讯

2026香格里拉对话会开幕,中... 第23届香格里拉对话会5月29日晚在新加坡开幕,来自40多个国家和地区的政要、防务官员和专家学者等共...
美国中期选举:谁是骄兵必败,谁... 【文/观察者网专栏作者 周德宇】从特朗普二次执政以来,其民调可以说是一路雪崩,连累着共和党也一起遭殃...
芗城区科协开展全国科技工作者日... 5月27日,芗城区科协联合东铺头街道、瑞京社区等单位,走进芗城实幼东铺头园区,开展芗城区全国科技工作...
诺基亚发布新手机,售价199元... 5月29日,诺基亚官宣推出200 4G手机,售价199元,是首款微聊手机,可通过微信小程序与其他手机...
“超智算一号”算力卫星发布,石... 新京报讯(记者王景曦)随着数字经济与航天技术深度融合,太空算力已成为国家新型基础设施建设的战略制高点...
美财长:多年来美国一直处于沉睡... 据凤凰卫视报道,美国财政部长贝森特5月29日在里根国家经济论坛上发表演讲,为特朗普的“美国优先”经济...
菲律宾正成为日本“新型军国主义... 【文/观察者网专栏作者 丁铎】菲律宾总统费迪南德·小马科斯于2026年5月26日至29日对日本进行国...
要不要“卸磨杀驴”?印尼陷入两... 【文/观察者网专栏作者 罗仪馥】据报道,印尼中国商会总会近日向普拉博沃总统发出一封英文信函,直指该国...
新加坡贸易关系部长:新加坡正承... 中东局势持续紧张,正在通过能源、航运和供应链等渠道影响全球经济。对于高度依赖贸易、能源进口和国际物流...
原创 国... 当传统山水风光遇上前沿国产科技,国内知名山岳景区正在悄然完成一场体验变革。以黄山接入国产大模型、泰山...