1. 程式人生 > >面試題23:鏈表中環的入口結點

面試題23:鏈表中環的入口結點

int div clas ret Coding 結點 page head -i

NowCoder

<?php
header("content-type:text/html;charset=utf-8");
/*
 * 給一個鏈表,若其中包含環,請找出該鏈表的環的入口結點,否則,輸出null。 P139
 *
 */
class ListNode{
    var $val;
    var $next = NULL;
    function __construct($x){
        $this->val = $x;
    }
}
function EntryNodeOfLoop($pHead)
{
    if($pHead == null){
        
return null; } $fast = $pHead->next->next; $slow = $pHead->next; while($fast != $slow){ //如果相遇就停下,找到相遇的結點(這裏的相遇包含沒有環的情況,如果沒有環,最後slow和fast的值都是null,也會停止循環) $fast = $fast->next->next; $slow = $slow->next; } $fast = $pHead; while($fast != $slow
){ $fast = $fast->next; $slow = $slow->next; } return $slow; } $head = new ListNode(1); $head->next = new ListNode(2); $head->next->next = new ListNode(3); $head->next->next->next = new ListNode(4); $head->next->next->next->next = new ListNode(5);
$head->next->next->next->next->next = new ListNode(6); $head->next->next->next->next->next->next = $head->next->next->next; print_r(EntryNodeOfLoop($head));

面試題23:鏈表中環的入口結點