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 设置MySQL连接字符集的方法
Jan 02 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
php设计模式之单例模式代码
Jun 11 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
PHP 记录访客的浏览信息方法
Jan 29 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 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默认安装产生系统漏洞
2006/10/09 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
一些常用的Javascript函数
2006/12/22 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
记一次用ts+vuecli4重构项目的实现
2020/05/21 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python opencv实现切变换 不裁减图片
2018/07/26 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
sklearn的predict_proba使用说明
2020/06/28 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
《赶海》教学反思
2014/04/20 职场文书
初婚未育证明样本
2015/06/18 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书