数据结构统计带头结点的单链表中结点的个数c语言
时间: 2024-09-09 09:01:13 浏览: 55
建立学生信息无头结点单链表C语言版.pdf
在C语言中,如果你有一个带头结点的单链表,统计其中节点的数量通常需要遍历整个链表。因为头结点不算实际的数据节点,所以你需要从第二个节点开始计数。你可以创建一个变量,初始值设为0,然后遍历链表,每遇到一个非空节点就将计数加一。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 函数声明
int countNodes(Node* head);
int main() {
// 创建并初始化链表...
Node* head = createLinkedList(); // 假设createLinkedList()是你用于创建链表的函数
int nodeCount = countNodes(head);
printf("链表中的节点总数: %d\n", nodeCount);
// 清理链表...
destroyLinkedList(head); // 假设destroyLinkedList()是释放链表内存的函数
return 0;
}
// 计算链表节点数量的函数
int countNodes(Node* head) {
if (head == NULL || head->next == NULL) {
return 1; // 如果链表为空或只有一个节点(头结点)
} else {
return 1 + countNodes(head->next); // 递归调用,增加头结点外的节点数
}
}
```
在这个例子中,`countNodes`函数会返回链表的实际数据节点数,而不包括头结点。
阅读全文