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下载远程文件类(支持断点续传)
Nov 14 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
php中JSON的使用方法
Apr 30 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
培养自己的php编码规范
Sep 28 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
php获取ajax的headers方法与内容实例
Dec 27 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
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
PHP 一个随机字符串生成代码
2010/05/26 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
百度地图API使用方法详解
2015/08/25 PHP
php处理复杂xml数据示例
2016/07/11 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
python针对excel的操作技巧
2018/03/13 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
公司成立感言
2014/01/11 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
公司贷款承诺书
2014/05/30 职场文书
安全责任书范文
2014/08/25 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
历史博物馆观后感
2015/06/05 职场文书
家庭贫困证明
2015/06/16 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书