C语言编写一个函数,判断链表中是否有环
时间: 2024-05-14 18:15:17 浏览: 106
一个用C语言编写的学生管理系统.zip
以下是一个判断链表中是否有环的C语言函数:
```
#include <stdbool.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
bool hasCycle(Node* head) {
Node* slow = head;
Node* fast = head;
while (fast != NULL && fast->next != NULL) {
slow = slow->next;
fast = fast->next->next;
if (slow == fast) {
return true;
}
}
return false;
}
```
这个函数使用快慢指针的方法来判断链表中是否有环。初始时,将慢指针和快指针都指向链表头部。然后,慢指针一次移动一个节点,快指针一次移动两个节点。如果链表中有环,那么快指针最终会追上慢指针,两个指针会相遇。如果链表中没有环,那么快指针会先到达链表尾部,此时循环结束。
因此,可以根据快慢指针的相对位置来判断链表中是否有环。如果两个指针相遇,则说明链表中有环;否则,说明链表中没有环。
阅读全文