当前位置:首页 > CN2资讯 > 正文内容

php 链表

2天前CN2资讯

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

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

以下是本人用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/>';




?>


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/26330.html

    标签: php链表PHP
    分享给朋友:
    返回列表

    上一篇:PHP getenv()

    下一篇:php cookie

    “php 链表” 的相关文章

    inet.ws纽约:高性能VPS服务与折扣优惠码解析

    inet.ws是一家新兴的互联网服务提供商,成立于2020年。尽管公司年轻,但它凭借创新的VPS服务迅速在市场上占据了一席之地。最让人称道的是,inet.ws致力于为用户提供稳定和高效的云服务器体验,尤其是在他们的纽约数据中心,这里被认为是其最重要的运营点之一。 在发展的过程中,inet.ws不断完...

    HKT IDC:企业数据中心服务的可靠选择

    HKT IDC服务介绍 HKT IDC是香港电讯专业客服国际有限公司(HKT)旗下的数据中心业务,专注于提供互联网数据中心服务。互联网数据中心,即IDC,简单来说就是一个为各类企业和机构提供托管和租用服务器的专业设施。想象一下,您公司的关键数据和应用都放置在一个高标准的机房环境中,这样不仅能确保数据...

    深入了解CN2 GIA VPS:选择更快稳定的虚拟专用服务器

    在现代互联网环境中,选择合适的虚拟专用服务器(VPS)至关重要。CN2 GIA VPS,则是个不错的选择。它基于中国电信的CN2 GIA国际精品网络,这一网络是中国电信下一代承载网络的高端产品,又被称为Chinatelecom Next Carrier Network- Global Interne...

    香港云服务器推荐:选择最佳服务提供商的全面指南

    什么是云服务器 在数字化时代,云服务器成为了许多企业和个人用户的重要资源。简单来说,云服务器是一种虚拟服务器,通过互联网提供灵活、可扩展的计算资源。用户无需拥有实体服务器,只需根据自己的需求选择相应的云服务,并进行配置管理。这样的好处在于,我可以根据项目的不同阶段进行资源的调整,而无需担心硬件的维护...

    如何在 VPS 上安装 FTP 服务:详细步骤与推荐软件

    在开始使用 VPS (虚拟私人服务器)之前,我想先和大家聊聊 VPS 和 FTP 的基本概念。VPS 是一种将物理服务器划分为多个独立虚拟环境的技术。这意味着即便在同一台物理服务器上,每个 VPS 都有自己独立的操作系统和资源。而 FTP(文件传输协议)则是一种用于在网络中传输文件的标准网络协议。我...

    Claw VPS:高效灵活的虚拟专用服务器解决方案

    1. Claw VPS 介绍 说到虚拟专用服务器,Claw VPS绝对值得一提。它是一种高效、灵活的云服务器解决方案,专为满足不同用户需求而设计。Claw VPS以其出色的性能和易用性,吸引了不少企业和个人用户。通过虚拟化技术,Claw VPS能够在一台物理服务器上创建多个独立的虚拟服务器。这样,用...