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 常用字符串函数总结
Mar 15 PHP
服务器web工具 php环境下
Dec 29 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
PHP 登录完成后如何跳转上一访问页面
Jan 14 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
php中时间函数date及常用的时间计算
May 12 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 PHP
php查询内存信息操作示例
May 09 PHP
tp5框架的增删改查操作示例
Oct 31 PHP
PHP7 其他修改
Mar 09 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
基于Zookeeper的使用详解
2013/05/02 PHP
javascript里的条件判断
2007/02/27 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python中的延迟绑定原理详解
2019/10/11 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
python 模块导入问题汇总
2021/02/01 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
人力资源管理毕业生自荐信
2014/06/26 职场文书
小学教师读书活动总结
2014/07/08 职场文书
食品安全汇报材料
2014/08/18 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
初中信息技术教学计划
2015/01/22 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技