设计一个算法,求一个不带头结点的单链表中的结点个数。使用C++
时间: 2024-09-29 08:08:08 浏览: 38
c++实现在二叉检索树中删除一个结点的算法
5星 · 资源好评率100%
设计一个简单的C++算法来计算无头结点单链表中的节点个数,可以使用迭代或递归的方式。这里我们提供一个迭代的方法:
```cpp
#include <iostream>
// 定义链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 函数用于获取链表长度
int getLinkedListLength(ListNode* head) {
if (head == nullptr) return 0; // 如果链表为空,则返回0
int count = 0; // 初始化计数器
ListNode* current = head; // 设置当前节点为头节点
while (current != nullptr) { // 当前节点不为空时
count++;
current = current->next; // 移动到下一个节点
}
return count;
}
int main() {
// 示例链表创建
ListNode* list = new ListNode(1);
list->next = new ListNode(2);
list->next->next = new ListNode(3);
list->next->next->next = new ListNode(4);
int length = getLinkedListLength(list);
std::cout << "链表中有 " << length << " 个节点." << std::endl;
delete list; // 释放内存
return 0;
}
```
在这个例子中,`getLinkedListLength`函数遍历整个链表,每当遇到非空节点就增加计数器,直到遍历完所有节点。
阅读全文