C++ 实现:环形链表环长度计算与起始位置确定全解析
以下是一个用 C++ 实现计算环形链表环的长度和确定环起始位置的示例代码: ```cpp #include <iostream> // 链表节点结构体 struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(NULL) {} }; // 检测链表是否有环,并返回环的起始节点 ListNode* detectCycle(ListNode* head) { ListNode* slow = head; ListNode* fast = head; while (fast && fast->next) { slow = slow->next; fast = fast->next->next; if (slow == fast) { ListNode* ptr = head; while (ptr!= slow) { ptr = ptr->next; slow = slow->next; } return ptr; } } return NULL; } // 计算环的长度 int lengthOfCycle(ListNode* head) { ListNode* start = detectCycle(head); if (start == NULL) { return 0; } ListNode* curr = start->next; int length = 1; while (curr!= start) { length++; curr = curr->next; } return length; } int main() { // 构建测试链表 ListNode* head = new ListNode(0); ListNode* p = head; for (int i = 1; i < 10; i++) { ListNode* ptmp = new ListNode(i); p->next = ptmp; p = ptmp; } p->next = head->next->next; // 制造环 int cycleLength = lengthOfCycle(head); std::cout << "环的长度: " << cycleLength << std::endl; return 0; } ``` 上述代码中,`detectCycle` 函数用于检测链表是否有环并返回环的起始节点。`lengthOfCycle` 函数基于 `detectCycle` 的结果计算环的长度。在 `main` 函数中构建了一个有环的测试链表,并调用相关函数进行计算和输出。 ######[AI写代码神器 | 519点数解答 | 2024-10-09 17:31:13]
- 数轴旅行:从原点出发,能否到达目标位置?(字节豆包 | 225点数解答 | 2026-01-23 19:51:03)49
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)350
- 解决 3ds Max 中 MAXScript FileIn 异常及语法错误的全攻略(字节豆包 | 459点数解答 | 2025-09-09 14:24:24)147
- Python Tkinter 代码剖析:GUI 程序搭建与窗口居中函数解析(字节豆包 | 314点数解答 | 2024-08-02 14:49:22)334
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)264
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)284
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)311
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)258
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)80
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)29
- 巧用 CDN 搭建含照片轮播、社交链接与 AI 对话的单页个人网页(字节豆包 | 485点数解答 | 2024-10-28 23:31:13)249