设计一个算法, 求一个带头结点的单链表中的结点的个数。(要求:1、给出单链表存储结构定义;2、自定义一个函数实现算法要求的功能
时间: 2024-10-20 20:03:11 浏览: 45
在设计算法求解一个带头结点的单链表中的节点个数时,我们可以定义一个简单的链表节点数据结构,然后创建一个函数来遍历整个链表并统计节点个数。
首先,我们定义一个`ListNode`结构体,它包含一个指向下一个节点的指针以及一个表示数据的字段:
```cpp
// 单链表节点定义
struct ListNode {
int data; // 节点的数据域
ListNode* next; // 指向下一个节点的指针
ListNode(int value) : data(value), next(nullptr) {} // 构造函数,初始化值和next为nullptr
};
```
接下来,我们创建一个名为`countNodes`的函数,该函数接受链表头节点作为输入,并返回链表中的节点总数:
```cpp
size_t countNodes(ListNode* head) {
if (head == nullptr) { // 如果链表为空,则没有节点
return 0;
}
size_t count = 1; // 初始化计数器为1(头节点)
ListNode* current = head->next; // 从第二个节点开始遍历
while (current != nullptr) { // 当前节点不为空
count++; // 计数器加一
current = current->next; // 移动到下一个节点
}
return count; // 返回节点总数
}
```
在这个函数中,我们通过迭代头节点之后的所有节点,逐个增加计数器直到遍历完整个链表。
阅读全文