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生成自己的LOG文件
Oct 09 PHP
php基础知识:类与对象(1)
Dec 13 PHP
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
使用 eAccelerator加速PHP代码的方法
Sep 30 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
求PHP数组最大值,最小值的代码
Oct 31 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
php获取YouTube视频信息的方法
Feb 11 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 PHP
PHP环形链表实现方法示例
Sep 15 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
PHP正则表达式之RCEService回溯
Apr 11 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
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python构造函数及解构函数介绍
2015/02/26 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
品恩科技软件测试面试题
2014/10/26 面试题
小学美术教学反思
2014/02/01 职场文书
员工晚婚的请假条
2014/02/08 职场文书
自荐信如何制作?
2014/02/21 职场文书
五一活动标语
2014/06/30 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
写字楼租赁意向书
2014/07/30 职场文书
初中学习计划书范文
2014/09/15 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
医生见习报告范文
2014/11/03 职场文书
工作岗位职责范本
2015/02/15 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js