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+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
深入PHP autoload机制的详解
Jun 09 PHP
PHP生成RSS文件类实例
Dec 05 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
php按单词截取字符串的方法
Apr 07 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
PHP依赖注入原理与用法分析
Aug 21 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 #PHP
You might like
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
php实现倒计时效果
2015/12/19 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
php封装的page分页类完整实例
2016/10/18 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
python中解析json格式文件的方法示例
2017/05/03 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
国际领先的学术出版商:Springer
2017/01/11 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
三八妇女节致辞
2015/07/31 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
Python实现机器学习算法的分类
2021/06/03 Python