这次给大家带来PHP找出链表中环入口节点步骤详解,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找出链表中环入口节点步骤详解相关推荐

  1. 判断链表是否有环,并且找出链表环的接点

    1.判断链表是否有环,根据Floyd判圈法,设置两个指针,fast, slow.fast指针每次移动2个位置,slow指针每次移动1个位置.如果链表有环,fast,slow指针会再次相遇. 2.如果链 ...

  2. php单链表检测有没有环,写一段代码判断单向链表中有没有形成环,如果形成环,请找出环的入口处,即P点...

    首先,关于单链表中的环,一般涉及到以下问题: 1.给一个单链表,判断其中是否有环的存在: 2.如果存在环,找出环的入口点: 3.如果存在环,求出环上节点的个数: 4.如果存在环,求出链表的长度: 5. ...

  3. 【链表】如何判断两个单向链表是否有相交,并找出交点

    判断两个链表是否相交:(假设两个链表都没有环) 1.判断第一个链表的每个节点是否在第二个链表中 2.把第二个链表连接到第一个后面,判断得到的链表是否有环,有环则相交 3.先遍历第一个链表,记住最后一个 ...

  4. 【IT笔试面试题整理】判断链表是否存在环路,并找出回路起点

    [试题描述]定义一个函数,输入一个链表,判断链表是否存在环路,并找出回路起点 Circular linked list: A (corrupt) linked list in which a node ...

  5. Android 性能优化(62)---存检测、卡顿优化、耗电优化、APK瘦身——详解篇

    Android 性能优化,内存检测.卡顿优化.耗电优化.APK瘦身--详解篇 自2008年智能时代开始,Android操作系统一路高歌,10年智能机发展之路,如今 Android 9.0 代号P  都 ...

  6. ios php 表单提交图片上传,axios发送post请求提交图片表单步骤详解

    这次给大家带来axios发送post请求提交图片表单步骤详解,axios发送post请求提交图片表单的注意事项有哪些,下面就是实战案例,一起来看一下. DOME 接口const userUploadA ...

  7. 抢鲜体验:Oracle 19C单实例数据库安装步骤详解

    抢鲜体验:Oracle 19C单实例数据库安装步骤详解 原创: 李宏达 数据和云 今天 作者:李宏达,云和恩墨北区交付工程师. 大家一直期待的 Oracle Database 19c 今天已经提供公开 ...

  8. php单链表检测有没有环,PHP 和 Go 实现环路链表检测

    环路链表检测 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点. 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路. 解题思路 1 遍历链表, ...

  9. fatal error lnk1561: 必须定义入口点_链表中是否有环以及找环的入口问题总结

    这篇会详细介绍有关环的入口节点问题,包括代码和理论证明. 首先来看一下如何判断链表中是否存在环.方法很简单,定义两个快慢指针slow和fast,慢指针每次走一步,快指针每次走两步,如果存在环,则快慢指 ...

最新文章

  1. Luogu P1082 同余方程(NOIP 2012) 题解报告
  2. 手机吸费软件肆意捞金,通过代码签名证书加以防范
  3. python下载安装教程mac-教程|如何在mac上为Python安装XGBoost!
  4. 卡巴斯基:儿童和老人的在线安全隐忧
  5. 2021热度不减的在线教育,正在努力成为线下教育的有益补充
  6. JS,Jquery 调用 C#WebService
  7. 构造函数调用默认构造函数_显式无参数构造函数与默认构造函数
  8. [Leetcode][第174题][JAVA][地下城游戏][DFS][动态规划]
  9. 【CodeForces - 215A】Bicycle Chain (水题)
  10. CAN收发器SN65HVD230,实际应用案例分析
  11. 这些面试中经常被问到的线程池问题,你都能回答的上来吗?
  12. Cuckoo Hashing
  13. 单片机C语言关键字之extern
  14. 执行SOA ——SOA实践指南
  15. MySQL order by、desc、limt的使用
  16. pwnable之bof
  17. Visual studio 2015(VS2015)的下载和安装,以及安装VS2015中的C++
  18. 11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
  19. 穹顶之下的出行利器:百度地图热力
  20. revit应用程序无法启动_revit无法运行外部

热门文章

  1. 和云服务器同步文件,和云服务器同步文件
  2. Python读取键盘输入到一维列表及二维列表
  3. 东方信息苑c语言,上海市东方社区信息苑一览表.PDF
  4. 什么是动态规划?动态规划的意义是什么?
  5. 数字电路硬件设计系列(八)之LED电路设计
  6. DVB-S2 DVB-S2X DVB-DSNG 发射机 接收机FPGA IP
  7. oracle10.21数据库安装,安装并创建数据库【Oracle Database 10g】(三)
  8. 服务器如何验证jwt,使用JWT实现前后端权限验证
  9. 脚本显示服务器超时,服务器诡异的请求超时问题
  10. 散列——再散列与双散列(C++)