PHP实现找出链表中环的入口节点


Posted in PHP onJanuary 16, 2018

本文实例讲述了PHP实现找出链表中环的入口节点。分享给大家供大家参考,具体如下:

问题

一个链表中包含环,请找出该链表的环的入口结点。

解决思路

第一步,找环中相汇点。分别用p1,p2指向链表头部,p1每次走一步,p2每次走二步,直到p1==p2找到在环中的相汇点。
第二步,找环的入口。接上步,当p1==p2时,p2所经过节点数为2x,p1所经过节点数为x,设环中有n个节点,p2比p1多走一圈有2x=n+x; n=x;可以看出p1实际走了一个环的步数,再让p2指向链表头部,p1位置不变,p1,p2每次走一步直到p1==p2; 此时p1指向环的入口。(还没怎么懂)

实现代码

<?php
/*class ListNode{
  var $val;
  var $next = NULL;
  function __construct($x){
    $this->val = $x;
  }
}*/
function EntryNodeOfLoop($pHead)
{
  if($pHead == null || $pHead->next == null)
    return null;
  $p1 = $pHead;
  $p2 = $pHead;
  while($p2!=null && $p2->next!=null){
    $p1 = $p1->next;
    $p2 = $p2->next->next;
    if($p1 == $p2){
      $p2 = $pHead;
      while($p1!=$p2){
        $p1 = $p1->next;
        $p2 = $p2->next;
      }
      if($p1 == $p2)
        return $p1;
    }
  }
  return null;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
几种显示数据的方法的比较
Oct 09 PHP
在JavaScript中调用php程序
Mar 09 PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
PHP学习笔记之三 数据库基本操作
Jan 17 PHP
php 随机排序广告的实现代码
May 09 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
PHP的PSR规范中文版
Sep 28 PHP
php操作xml
Oct 27 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
详解thinkphp中的volist标签
Jan 15 #PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 #PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 #PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 #PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 #PHP
详解PHP序列化和反序列化原理
Jan 15 #PHP
PHP使用两个栈实现队列功能的方法
Jan 15 #PHP
You might like
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
php使用GeoIP库实例
2014/06/27 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
javascript常见操作汇总
2014/09/03 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
angular十大常见问题
2017/03/07 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
python进阶教程之模块(module)介绍
2014/08/30 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
自我鉴定范文200字
2013/10/02 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
创业大赛策划书
2014/03/01 职场文书
医学求职信
2014/05/28 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
大四学生个人总结
2015/02/15 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库