码迷,mamicode.com
首页 > 其他好文 > 详细

CC150 2.5

时间:2014-11-24 08:44:00      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:interview

2.5 Given a circular linked list, implement an algorithm which returns node at the beginning of the loop. DEFINITION Circular linked list: A (corrupt) linked list in which a node’s next pointer points to an earlier node, so as to make a loop in the linked list. EXAMPLE input: A -> B -> C -> D -> E -> C (the same C as earlier) output: C

Node findCircle(Node head)
{
  Node p1 = head;
  Node p2 = head;

  while (p2 != null)
  {
    if (p1 == p2)
    {
      break;
    }
      
    p1 = p1.next;
    
    p2 = p2.next;
    p2 = p2 == null ? null : p2.next;
  }
  
  if (p2 == null)
    return null;
  
  p1 = head;
  while (p1 != p2)
  {
    p1 = p1.next;
    p2 = p2.next;
  }
  
  return p1;
}


CC150 2.5

标签:interview

原文地址:http://7371901.blog.51cto.com/7361901/1581737

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!