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 相关文章推荐
967 个函式
Oct 09 PHP
PHP动态变静态原理
Nov 25 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
Yii CGridView用法实例详解
Jul 12 PHP
通过php动态传数据到highcharts
Apr 05 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 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+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 #PHP
You might like
虫族 Zerg 热键控制
2020/03/14 星际争霸
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
php横向重复区域显示二法
2008/09/25 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
PHP Cookie学习笔记
2016/08/23 PHP
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
python处理html转义字符的方法详解
2016/07/01 Python
python如何让类支持比较运算
2018/03/20 Python
Python I/O与进程的详细讲解
2019/03/08 Python
详解Python 切片语法
2019/06/10 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
Python实现分数序列求和
2020/02/25 Python
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
测量工程专业求职信
2014/02/24 职场文书
代办出身证明书
2014/10/21 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
Redis RDB技术底层原理详解
2021/09/04 Redis