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 相关文章推荐
php中cookie的作用域
Mar 27 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
关于php fread()使用技巧
Jan 22 PHP
PHP 图像尺寸调整代码
May 26 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
常见PHP数据库解决方案分析介绍
Sep 24 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
Jun 08 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+mysql保存和输出文件
2006/10/09 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
js闭包的用途详解
2014/11/09 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
python实现飞机大战微信小游戏
2020/03/21 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
Python中的With语句的使用及原理
2020/07/29 Python
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
有机童装:Toby Tiger
2018/05/23 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
文秘专业应届生求职信范文
2013/11/14 职场文书
商铺消防安全责任书
2014/07/29 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
语文复习计划
2015/01/19 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书