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 10 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
解析php中memcache的应用
Jun 18 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
JS异常处理try..catch语句的作用和实例
May 05 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
PHP浮点数精度问题汇总
May 13 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
Smarty模板变量与调节器实例详解
Jul 20 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
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
js如何验证密码强度
2020/03/18 Javascript
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
经典优秀个人求职自荐信格式
2013/09/25 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
捐款倡议书范文
2014/02/02 职场文书
参观接待方案
2014/03/17 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
简历自我评价模板
2015/03/11 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
Django实现翻页的示例代码
2021/05/24 Python
redis哨兵常用命令和监控示例详解
2021/05/27 Redis