酷代码 AI
菜单
服务商

揭秘!如何用 C++ 代码找出链表入环的首个节点

```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; } ``` ######[AI问答 | 279点数解答 | 2025-11-05 15:09:02]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]