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+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
PHP使用数组实现队列
Feb 05 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
php连接与操作PostgreSQL数据库的方法
Dec 25 PHP
Laravel日志用法详解
Oct 09 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
深入理解PHP的远程多会话调试
Sep 21 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数据库的查询统计速度 select 索引应用
2007/04/11 PHP
Zend Guard一些常见问题解答
2008/09/11 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
javascript工具库代码
2012/03/29 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
Python语法快速入门指南
2015/10/12 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
高级3D打印市场:Gambody
2019/12/26 全球购物
中专生自荐信
2013/10/12 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
高中军训感言500字
2014/02/24 职场文书
房产买卖委托公证书
2014/04/04 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
会计求职自荐信
2014/06/20 职场文书
通知范文怎么写
2015/04/16 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python