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数据浏览器
Mar 11 PHP
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
php结合ajax实现赞、顶、踩功能实例
May 12 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
PHP之sprintf函数用法详解
Nov 12 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
Yii2中关联查询简单用法示例
Aug 10 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 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木马攻击防御之道
2008/03/24 PHP
php权重计算方法代码分享
2014/01/09 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
Java中final关键字详解
2015/08/10 PHP
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
python socket 超时设置 errno 10054
2014/07/01 Python
Python比较两个图片相似度的方法
2015/03/13 Python
Python实现建立SSH连接的方法
2015/06/03 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
美国时尚在线:Showpo
2017/09/08 全球购物
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python