php教程

超轻量级php框架startmvc

PHP中模拟链表和链表的基本操作示例

更新时间:2020-03-07 23:55:09 作者:startmvc
模拟链表:<?php/***PHP实现链表的基本操作*/classlinkList{/***姓名*@varstring*/public$name='';/***

模拟链表:


<?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);
 
?>

PHP 链表