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 相关文章推荐
信用卡效验程序
Oct 09 PHP
php生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
深入PHP数据加密详解
Jun 18 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
PHP date函数常用时间处理方法
May 11 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
实例化php类时传参的方法分析
Jun 05 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压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
一个超级简单的python web程序
2014/09/11 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
python如何查看微信消息撤回
2018/11/27 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
python3将变量输入的简单实例
2020/08/19 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
我未来的职业规划范文
2014/01/11 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
街道务虚会发言材料
2014/10/20 职场文书
表扬信范文
2015/05/04 职场文书
二审答辩状格式
2015/05/22 职场文书
新手入门Mysql--概念
2021/06/18 MySQL