PHP中模拟链表和链表的基本操作示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-07-12 10:36:18 浏览: 评论:0
这篇文章主要介绍了PHP中模拟链表和列表的基本操作示例,包括链表的增删查改等,说明基本上都包含在代码注释中,需要的朋友可以参考下。
模拟链表:
- <?php
- /**
- * PHP实现链表的基本操作
- */
- class linkList {
- /**
- * 姓名
- * @var string
- */
- public $name = '';
- /**
- * 编号
- * @var int
- */
- public $id = 0;
- /*
- * 引用下一个对象
- */
- public $next = null;
- /**
- * 构造函数初始化数据
- * @param int $id
- * @param string $name
- */
- public function __construct($id = 0, $name = '') {
- $this->name = $name;
- $this->id = $id;
- }
- /**
- * 遍历链表
- */
- public static function echo_link_list($head) {
- $curr = $head;
- while ($curr->next != null) {
- echo '姓名:'.$curr->next->name, ' 编号:'.$curr->next->id;
- echo '<br>';
- $curr = $curr->next;
- }
- }
- /**
- * 添加新节点
- */
- public static function add($head, $id, $name) {
- $curr = $head;
- $obj = new linkList($id, $name);
- while ($curr->next != null) {
- // 如果当前ID < 下一个ID,则添加到中间,添加节点到指定顺序位置
- if ($curr->next->id > $id) {
- $obj->next = $curr->next;
- $curr->next = $obj;
- return true;
- } else if ($curr->next->id == $id) {
- echo '当前Id:'.$id.'重复了,请不要继续添加了!';
- echo '<br>';
- return false;
- }
- $curr = $curr->next;
- }
- // 添加节点到尾部
- if ($curr->next == null) {
- $curr->next = $obj;
- }
- }
- /**
- * 删除节点
- */
- public static function del($head, $id) {
- $curr = $head;
- while($curr->next != null) {
- if ($curr->next->id == $id) {
- $curr->next = $curr->next->next;
- return true;
- }
- $curr = $curr->next;
- }
- }
- /**
- * 修改节点
- */
- public static function edit($head, $id, $new_name) {
- $curr = $head;
- while($curr->next != null) {
- if ($curr->next->id == $id) {
- $curr->next->name = $new_name;
- }
- $curr = $curr->next;
- }
- }
- }
- $head = new linkList();
- linkList::add($head, 1, 'wangdk');
- linkList::add($head, 2, 'sunshuzhen');
- linkList::add($head, 8, 'wanghaha');
- linkList::add($head, 6, 'wangchufen');
- linkList::add($head, 6, 'wangchufen');
- linkList::add($head, 3, 'wangdaye');
- linkList::del($head, 1);
- linkList::edit($head, 2, 'hahaha');
- linkList::echo_link_list($head);
- ?>
链表的增删查改:
- <?php
- /**
- * PHP实现链表的基本操作
- */
- class linkList {
- /**
- * 姓名
- * @var string
- */
- public $name = '';
- /**
- * 编号
- * @var int
- */
- public $id = 0;
- /*
- * 引用下一个对象
- */
- public $next = null;
- /**
- * 构造函数初始化数据
- * @param int $id
- * @param string $name
- */
- public function __construct($id = 0, $name = '') {
- $this->name = $name;
- $this->id = $id;
- }
- /**
- * 遍历链表
- */
- public static function echo_link_list($head) {
- $curr = $head;
- while ($curr->next != null) {
- echo '姓名:'.$curr->next->name, ' 编号:'.$curr->next->id;
- echo '<br>';
- $curr = $curr->next;
- }
- }
- /**
- * 添加新节点
- */
- public static function add($head, $id, $name) {
- $curr = $head;
- $obj = new linkList($id, $name);
- while ($curr->next != null) {
- // 如果当前ID < 下一个ID,则添加到中间,添加节点到指定顺序位置
- if ($curr->next->id > $id) {
- $obj->next = $curr->next;
- $curr->next = $obj;
- return true;
- } else if ($curr->next->id == $id) {
- echo '当前Id:'.$id.'重复了,请不要继续添加了!';
- echo '<br>';
- return false;
- }
- $curr = $curr->next;
- }
- // 添加节点到尾部
- if ($curr->next == null) {
- $curr->next = $obj;
- }
- }
- /**
- * 删除节点
- */
- public static function del($head, $id) {
- $curr = $head;
- while($curr->next != null) {
- if ($curr->next->id == $id) {
- $curr->next = $curr->next->next;
- return true;
- }
- $curr = $curr->next;
- }
- }
- /**
- * 修改节点
- */
- public static function edit($head, $id, $new_name) {
- $curr = $head;
- while($curr->next != null) {
- if ($curr->next->id == $id) {
- $curr->next->name = $new_name;
- }
- $curr = $curr->next;
- }
- }
- }
- $head = new linkList();
- linkList::add($head, 1, 'wangdk');
- linkList::add($head, 2, 'sunshuzhen');
- linkList::add($head, 8, 'wanghaha');
- linkList::add($head, 6, 'wangchufen');
- linkList::add($head, 6, 'wangchufen');
- linkList::add($head, 3, 'wangdaye');
- linkList::del($head, 1);
- linkList::edit($head, 2, 'hahaha');
- linkList::echo_link_list($head);
- ?>
Tags: PHP模拟链表 PHP链表操作
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)