求带头节点的单链表长C语言
时间: 2024-10-17 20:05:39 浏览: 31
在C语言中,求带头节点的单链表的长度,可以遍历整个链表并计数。链表节点通常包含两个部分:数据域用于存储值,指针域用于指向下一个节点。以下是一个简单的函数示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
// 函数声明:计算链表长度
size_t getLinkedListLength(Node* head);
int main() {
// 创建示例链表
Node* head = (Node*)malloc(sizeof(Node)); // 初始化头节点
head->data = 0;
head->next = (Node*)malloc(sizeof(Node));
head->next->data = 1;
head->next->next = (Node*)malloc(sizeof(Node));
head->next->next->data = 2;
size_t length = getLinkedListLength(head);
printf("链表长度: %zu\n", length); // 输出链表长度
free(head->next->next);
free(head->next);
free(head);
return 0;
}
// 计算链表长度的函数
size_t getLinkedListLength(Node* head) {
if (head == NULL) {
return 0; // 如果链表为空,长度为0
} else {
size_t count = 1; // 非空链表,初始计数为1
Node* current = head;
while (current->next != NULL) {
count++;
current = current->next;
}
return count;
}
}
```
在这个例子中,`getLinkedListLength`函数会从头节点开始递归遍历,直到遇到`NULL`,返回遍历过的节点数即为链表长度。
阅读全文