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下用GD生成生成缩略图的两个选择和区别
Apr 17 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
PHP实现事件机制实例分析
Jun 26 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
PHP代码审核的详细介绍
2013/06/13 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
2012/02/03 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
Vue根据条件添加click事件的方式
2019/11/09 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
python实现最长公共子序列
2018/05/22 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
Python实现一个优先级队列的方法
2020/07/31 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
学生会竞选演讲稿怎么写
2014/08/26 职场文书