您的位置:首页 > 职场人生

面试题:判断单链表是否为循环链表-快慢指针

2013-06-19 10:25 477 查看
题目:判断单链表是否为循环链表(判断链表中是否存在环)

分析:使用快慢2个指针,2个指针都从链表头开始遍历,快指针每次移动2个结点,满指针每次移动1个结点。若链表中存在环,则快慢2指针后在链表的某一位置相遇,否则她们不会相遇。

typedef struct Lnode
{
int data;
struct Lnode *next;
}*Linklist;

//检测单链表是否为循环链表或链表中是否存在环
int findloop(Linklist *L)
{
Linklist fast,slow;
if(NULL == L)
{
printf("input error!\n");
return -1;
}
fast = slow = L;
while(1)
{
if(NULL == fast->next)
return -1;
else if((fast == slow) || (fast->next == slow))
return 0;
else
{
fast = fast->next->next;
slow = slow->next;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐