酷代码 AI
菜单
服务商

#include <iostream> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; LNode * detectCycle(LinkList L) { //在此处填入代码 } 本关任务:设计一个算法,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null

```cpp #include <iostream> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; LNode * detectCycle(LinkList L) { // 定义快慢指针 LNode* slow = L; LNode* fast = L; // 快慢指针遍历链表,判断是否有环 while (fast != nullptr && fast->next != nullptr) { slow = slow->next; fast = fast->next->next; // 快慢指针相遇,说明有环 if (slow == fast) { // 让一个指针从头节点开始,另一个指针从相遇点开始,再次相遇的节点就是环的入口 LNode* ptr1 = L; LNode* ptr2 = slow; while (ptr1 != ptr2) { ptr1 = ptr1->next; ptr2 = ptr2->next; } return ptr1; } } // 没有环,返回 nullptr return nullptr; } ``` [2025-11-05 15:09:02 | AI问答 | 279点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多