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 相关文章推荐
利用php获取服务器时间的实现代码
Jun 07 PHP
PHP中的use关键字概述
Jul 23 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
详解php比较操作符的安全问题
Dec 03 PHP
php制作简单模版引擎
Apr 07 PHP
php数据访问之增删改查操作
May 09 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 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
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
跟老齐学Python之关于类的初步认识
2014/10/11 Python
python递归计算N!的方法
2015/05/05 Python
单利模式及python实现方式详解
2018/03/20 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
Python中一些深不见底的“坑”
2019/06/12 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
python中time包实例详解
2021/02/02 Python
Linux机考试题
2015/10/16 面试题
物理系毕业生自荐信
2013/11/01 职场文书
简单租房协议书
2014/04/09 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS