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中的正则表达式函数介绍
Feb 27 PHP
php 函数中使用static的说明
Jun 01 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
php使用curl获取https请求的方法
Feb 11 PHP
在Windows XP下安装Apache+MySQL+PHP环境
Feb 22 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
python网络编程之五子棋游戏
2020/05/14 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
Python request post上传文件常见要点
2020/11/20 Python
css3学习心得分享
2013/08/19 HTML / CSS
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
师说教学反思
2014/02/07 职场文书
我的祖国演讲稿
2014/05/04 职场文书
国庆节活动总结
2014/08/26 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
2015年教师国培感言
2015/08/01 职场文书
再谈python_tkinter弹出对话框创建
2022/03/20 Python