【C语言】求带环单链表的环长

来源:互联网 发布:淘宝网鱼缸 编辑:程序博客网 时间:2024/06/05 15:53

思想:快慢指针,先让快指针追上慢指针,再指针不动,指针单步走,两个指针再次相遇时,慢指针在第一次相遇后所单步走的步数就为环长

           
intLengthCycle(Plinklist*pplist)
{
          assert(pplist);
          Node*fast = *pplist;
          Node*slow = *pplist;
          while(fast&&fast->next) 
          {
                   fast = fast->next->next;
                   slow = slow->next;
                   if(fast == slow)
                   {
                             break;
                   }
          }
          intcount = 0;
          do
          {
                   slow = slow->next;
                   count++;
          }while(fast != slow);
          returncount;
}

0 0
原创粉丝点击