首页 > 其他 > 详细

CC150 2.5

时间:2014-11-24 08:42:12      阅读:260      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!