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 相关文章推荐
实用函数2
Nov 08 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
php实现自动获取生成文章主题关键词功能的深入分析
Jun 03 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
Yii配置文件用法详解
Dec 04 PHP
php中使用url传递数组的方法
Feb 11 PHP
php三元运算符知识汇总
Jul 02 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
Yii框架日志操作图文与实例详解
Sep 09 PHP
php实现QQ小程序发送模板消息功能
Sep 18 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内置的Math函数效率测试
2014/12/01 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
php实现留言板功能
2017/03/05 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
Python自动扫雷实现方法
2015/07/25 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
详解Python核心对象类型字符串
2018/02/11 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
python和php哪个更适合写爬虫
2020/06/22 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
新书吧创业计划书
2014/01/31 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
购房委托书范本
2014/09/18 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技