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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
php图片验证码代码
Mar 27 PHP
php笔记之:文章中图片处理的使用
Apr 26 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
PHP之uniqid()函数用法
Nov 03 PHP
php实现singleton()单例模式实例
Nov 06 PHP
jquery获取多个checkbox的值异步提交给php的方法
Jun 24 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 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中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
php购物车实现方法
2015/01/03 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
2018/09/15 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
详解Python循环作用域与闭包
2019/03/21 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
一个大学生十年的职业规划
2014/01/17 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
法人委托书范本
2014/09/15 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
行政经理岗位职责
2015/04/15 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
建议书的格式及范文
2015/09/14 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
python使用pymysql模块操作MySQL
2021/06/16 Python
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
Nginx报404错误的详细解决方法
2022/07/23 Servers