c++循环单链表怎么写函数算它的长度
时间: 2024-09-25 13:02:48 浏览: 37
在 C++ 中,计算循环单链表的长度通常需要遍历整个链表并计数节点。下面是一个简单的示例,假设有一个名为 `ListNode` 的链表节点结构体,它包含一个整数值 `val` 和一个指向下一个节点的指针 `next`:
```cpp
struct ListNode {
int val;
ListNode* next;
// 如果是循环链表,这里还需要一个额外的 bool isCycle 来标记是否为循环
};
// 使用迭代法检测循环并计算长度
size_t getLength(ListNode* head) {
if (!head || !head->next) { // 非空列表的情况
return head ? 1 : 0; // 返回长度
}
size_t length = 1;
ListNode* current = head;
// 检查是否有环
while (true) {
if (current == head && current->next != head) { // 循环链表
break;
}
current = current->next;
length++;
}
return length;
}
```
这个函数首先检查头节点是否存在及其后继,然后进入一个无限循环,直到遇到循环链表的开始位置(或者到达列表尾部)。通过递增 `length` 变量,我们可以得到链表的实际长度。
阅读全文