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 相关文章推荐
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
Jun 21 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
php微信支付之APP支付方法
Mar 04 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
浅谈laravel aliases别名的原理
Oct 24 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 Mysql日期和时间函数集合
2007/11/16 PHP
php 进度条实现代码
2009/03/10 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
用python写扫雷游戏实例代码分享
2018/05/27 Python
详解Python中的分支和循环结构
2020/02/11 Python
Python如何省略括号方法详解
2020/03/21 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
如何利用find命令查找文件
2016/11/18 面试题
教师节倡议书
2014/08/30 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
小学教师求职信范文
2015/03/20 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
Mysql基础之常见函数
2021/04/22 MySQL
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers