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 10 PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
PHP file_get_contents设置超时处理方法
Sep 30 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
php检测数组长度函数sizeof与count用法
Nov 17 PHP
PHP 验证登陆类分享
Mar 13 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 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
PHP 变量的定义方法
2010/01/26 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
Python常用列表数据结构小结
2014/08/06 Python
python基础教程之对象和类的实际运用
2014/08/29 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
Python os模块常用方法和属性总结
2020/02/20 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
国际经济贸易专业推荐信
2013/11/06 职场文书
高三体育教学反思
2014/01/29 职场文书
安全大检查反思材料
2014/01/31 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
端午节活动总结
2014/08/26 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
幼师中班个人总结
2015/02/12 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python