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
Apache2 httpd.conf 中文版
Dec 06 PHP
php下用GD生成生成缩略图的两个选择和区别
Apr 17 PHP
php GeoIP的使用教程
Mar 09 PHP
基于PHP文件操作的详解
Jun 05 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
php删除数组中重复元素的方法
Dec 22 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
PHP实现图片压缩
Sep 09 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 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
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
PHP PDO函数库详解
2010/04/27 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
Python里隐藏的“禅”
2014/06/16 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
python实现广度优先搜索过程解析
2019/10/19 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
Python的历史与优缺点整理
2020/05/26 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
给实习单位的感谢信
2014/02/01 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
社区戒毒工作方案
2014/06/04 职场文书
志愿者活动总结报告
2014/06/27 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
python套接字socket通信
2022/04/01 Python