c语言中如何用不带头节点的单链表实现统计表长
时间: 2024-02-12 16:08:54 浏览: 21
使用不带头节点的单链表实现统计表长,可以通过遍历链表来计算节点数量。具体实现步骤如下:
1. 定义一个指向链表首节点的指针变量p,初始值为NULL。
2. 定义一个计数器变量count,初始值为0。
3. 从链表头开始遍历链表,每遍历到一个节点,将count加1。
4. 直到遍历到最后一个节点时,count的值就是链表的长度。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表节点结构体
typedef struct ListNode {
int data; // 数据域
struct ListNode *next; // 指针域
} ListNode;
// 统计链表长度函数
int countList(ListNode *p) {
int count = 0; // 计数器
while (p != NULL) { // 遍历链表
count++; // 计数器加1
p = p->next; // 指针指向下一个节点
}
return count; // 返回链表长度
}
int main() {
// 创建链表 1->2->3->4->5
ListNode *head = NULL;
ListNode *p1 = (ListNode*)malloc(sizeof(ListNode));
ListNode *p2 = (ListNode*)malloc(sizeof(ListNode));
ListNode *p3 = (ListNode*)malloc(sizeof(ListNode));
ListNode *p4 = (ListNode*)malloc(sizeof(ListNode));
ListNode *p5 = (ListNode*)malloc(sizeof(ListNode));
p1->data = 1; p2->data = 2; p3->data = 3; p4->data = 4; p5->data = 5;
p1->next = p2;
p2->next = p3;
p3->next = p4;
p4->next = p5;
p5->next = NULL;
head = p1;
// 统计链表长度
int length = countList(head);
printf("The length of the list is %d.\n", length);
return 0;
}
```
输出结果为:
```
The length of the list is 5.
```