首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

口试之-判断单链表是否有环

2013-03-12 
面试之------判断单链表是否有环某次面试中第一道题目,但是结果没思路。单链表的每个节点都单向指向下一个

面试之------判断单链表是否有环
某次面试中第一道题目,但是结果没思路。
单链表的每个节点都单向指向下一个节点,所以如果有环则只可能是链表尾指向了前面的某个节点(可能是头节点或者任意)。

下面是算法实现:

/*有环单向链表中大小指针会多次相遇;而且两次相遇之间的差值就是环的大小*/int get_size_of_linkedlist_loop(linkedList *head){    int loop_size;    linkedList *p1 = head, *p2 = head;    bool hasMeet = false;    while(!secondMeet){        ++loop_size;        p1 = p1->next;        p2 = p2->next->next;        if(!hasMeet && p1 == p2){        hasMeet = true;        loop_size = 0;        }        if(hasMeet && p1 == p2)        break;    }    return loop_size;}


热点排行