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中进行身份认证
Oct 09 PHP
PHP 工厂模式使用方法
May 18 PHP
php的一些小问题
Jul 03 PHP
CURL的学习和应用(附多线程实现)
Jun 03 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
PHP简单日历实现方法
Jul 20 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
php输出反斜杠的实例方法
Sep 19 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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选择排序法实现数组排序实例分析
2015/02/16 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
php格式化时间戳
2016/12/17 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
DOM 基本方法
2009/07/18 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
pm2启动ssr失败的解决方法
2019/06/29 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现根据月份和日期得到星座的方法
2015/03/27 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
深入理解Python3 内置函数大全
2017/11/23 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
会计专业自荐信范文
2013/12/02 职场文书
静心口服夜广告词
2014/03/20 职场文书
运动员口号
2014/06/09 职场文书
导游词之吉林花园山
2019/10/17 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
html5调用摄像头截图功能
2022/01/18 Javascript