如何判断一个链表中是否有环
设置两个指针,一个步长为1, 一个步长为2。如果在遍历过程中,快的指针遇到NULL或两指针相遇结束。如果两个指针相遇,说明链表中有环存在,否则链表无环。
struct Node (){Data data;Node* next;};bool circular(Node* list)
{
Node* p_single = list;
Node* p_double = list;
while (true)
{
p_single = p_single->next;
p_double = p_double->next; //第一个步长
if (p_double == NULL || p_double->next == NULL)
{
return false;
} else
{
p_double = p_double->next // 一次循环中p_double走了两个步长
if (p_single == p_double)
{
return true;
}
}
}
return false;
}
如何判断一个链表中是否有环
最新推荐文章于 2021-09-30 15:28:19 发布