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中在数据库中保存Checkbox数据(2)
Oct 09 PHP
PHP的FTP学习(二)
Oct 09 PHP
完美解决PHP中文乱码
Nov 26 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
php自动加载机制的深入分析
Jun 08 PHP
PHP入门之常量简介和系统常量
May 12 PHP
php调用新浪短链接API的方法
Nov 08 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
CI配置多数据库访问的方法
Mar 28 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
May 23 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
Jul 03 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
dedecms模版制作使用方法
2007/04/03 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Javascript 类型转换方法
2010/10/24 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
用js实现in_array的方法
2013/11/05 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
基于vue实现分页效果
2017/11/06 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python实现彩票系统
2020/06/28 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
pytorch 共享参数的示例
2019/08/17 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
Python如何实现邮件功能
2020/05/27 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
竞争性谈判邀请书
2014/02/06 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
学历公证书范本
2014/04/09 职场文书
我的梦想演讲稿
2014/04/30 职场文书
校庆团日活动总结
2014/08/28 职场文书
地陪导游欢迎词
2015/01/26 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript