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+SqlServer实现分页显示
Oct 09 PHP
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
AJAX for PHP简单表数据查询实例
Jan 02 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
PHP之autoload运行机制实例分析
Aug 28 PHP
php通过文件头判断格式的方法
May 28 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
基于php伪静态的实现方法解析
Jul 31 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
php实现微信支付之现金红包
2018/05/30 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
python生成日历实例解析
2014/08/21 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
Python中单、双下划线的区别总结
2017/12/01 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
《雨霖铃》教学反思
2014/02/22 职场文书
保险公司晨会主持词
2014/03/22 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
2014年居委会工作总结
2014/12/09 职场文书
经验交流材料格式
2014/12/30 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
python随机打印成绩排名表
2021/06/23 Python
宝塔更新Python及Flask项目的部署
2022/04/11 Python
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android