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


Posted in PHP onFebruary 27, 2016

模拟链表:

<?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 相关文章推荐
新版PHP极大的增强功能和性能
Oct 09 PHP
paypal即时到账php实现代码
Nov 28 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
destoon后台网站设置变成空白的解决方法
Jun 21 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
php连接mysql数据库
Mar 21 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 #PHP
简单谈谈PHP中strlen 函数
Feb 27 #PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 #PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 #PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 #PHP
PHP实现根据时间戳获取周几的方法
Feb 26 #PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 #PHP
You might like
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
Js获取事件对象代码
2010/08/05 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
前台文员我鉴定
2014/01/12 职场文书
网页美工求职信
2014/02/15 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
校长个人总结
2015/03/03 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
分享Python异步爬取知乎热榜
2022/04/12 Python
JS setTimeout与setInterval的区别
2022/04/20 Javascript
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL