PHP环形链表实现方法示例


Posted in PHP onSeptember 15, 2017

本文实例讲述了PHP环形链表实现方法。分享给大家供大家参考,具体如下:

环形链表是一种链式存储结构,类似于单链表。区别是环形链表的尾节点指向头节点。

从而形成一个环,

环形链表是一种非常灵活的存储结构,可解决许多实际问题,魔术师发牌问题和约瑟夫问题

都能利用环形链表来解决,下面是一个完整的环形链表实例,使用php来实现的(参照韩顺平老师的php算法教程)

/** 
 *  环形链表的实现
 *  
 */
class child
{
  public $no;//序号
  public $next;//指向下个节点的指针
  public function __construct($no=''){
    $this ->no = $no;
  }
}
/**
 * 创建一个环形链表
 * @param $first null  链表的头节点
 * @param $num  integer 需要添加节点的数量
 */
function create(&$first,$num)
{
  $cur = null;
  for ($i=0;$i<$num;$i++)
  {
    $child = new child($i+1);
    if ($i==0)
    {  
      $first = $child;
      $first->next = $first;//将链表的尾节点指向头节点 形成环形链表
      $cur = $first;//链表的头节点不能动 需要交给一个临时变量
    } else {
      $cur->next = $child;
      $cur->next->next = $first;//将链表的尾节点指向头节点 形成环形链表
      $cur = $cur->next;
    }
  }
}
/**
 * 遍历环形链表
 * @param $first object 环形链表的头
 * 
 */
function show ($first)
{
  //头节点不能动,交个一个临时变量
  $cur = $first;
  while ($cur->next!=$first)//当$cur->next==$first说明到了链表的最后一个节点
  {
    echo $cur->no.'</br>';
    $cur = $cur->next;
  }
  //当退出循环的时候$cur->next=$first 刚好会忽略当前节点本身的遍历 所以退出的时候还要输出一下 否则会少遍历一个节点
  echo $cur->no;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
PHP实现微信提现功能(微信商城)
Nov 21 PHP
PHP预定义接口――Iterator用法示例
Jun 05 PHP
PHP实现的链式队列结构示例
Sep 15 #PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 #PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 #PHP
visual studio code 调试php方法(图文详解)
Sep 15 #PHP
PHP简单实现模拟登陆功能示例
Sep 15 #PHP
Thinkphp开发--集成极光推送
Sep 15 #PHP
php插件Xajax使用方法详解
Aug 31 #PHP
You might like
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
[05:24]TI9采访——教练
2019/08/24 DOTA
Python批量修改文本文件内容的方法
2016/04/29 Python
pandas通过loc生成新的列方法
2018/11/28 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
Python中的类与类型示例详解
2019/07/10 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
python空元组在all中返回结果详解
2020/12/15 Python
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
网络编辑岗位职责
2014/03/18 职场文书
合作意向书格式及范文
2014/03/31 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
秋天的雨教学反思
2014/04/27 职场文书
低碳环保标语
2014/06/12 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
欢迎标语大全
2014/06/21 职场文书
高中化学教学反思
2016/02/22 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
了解Redis常见应用场景
2021/06/23 Redis
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
python​格式化字符串
2022/04/20 Python