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调用Oracle存储过程
Oct 09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
PHP高级OOP技术演示
Aug 27 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
Joomla语言翻译类Jtext用法分析
May 05 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
统计PHP目录中的文件数方法
Mar 05 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 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 register_shutdown_function()函数的使用示例
2015/06/23 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
python 画函数曲线示例
2019/12/04 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
python 检测图片是否有马赛克
2020/12/01 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
公司董事长助理工作职责
2014/07/12 职场文书
公证委托书格式
2014/09/13 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS