C语言数据结构写一求单链表的结点数目ListLength(L)的算法
时间: 2024-12-23 12:13:18 浏览: 27
在C语言中,你可以使用一个简单的计数循环来计算单链表的节点数目。假设`ListNode`是一个链表节点的结构体,它有一个指向下一个节点的指针`next`。下面是求解链表长度的算法:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设 ListNode 结构如下:
typedef struct ListNode {
int data; // 节点的数据域
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 定义函数来获取链表长度
int ListLength(ListNode* L) {
if (L == NULL) { // 如果链表为空,则返回0
return 0;
} else {
int length = 1; // 初始化长度为1,因为我们已经遍历了一个节点
ListNode* current = L;
// 循环遍历直到链表结束
while (current->next != NULL) {
length++; // 遇到非空节点,长度加1
current = current->next;
}
return length; // 返回链表的实际长度
}
}
// 示例链表创建和测试
void createList(ListNode** head) {
*head = (ListNode*)malloc(sizeof(ListNode));
(*head)->data = 1;
(*head)->next = (ListNode*)malloc(sizeof(ListNode));
(*head)->next->data = 2;
(*head)->next->next = NULL; // 创建一个包含两个节点的链表
}
int main() {
ListNode* listHead = NULL;
createList(&listHead);
printf("链表的长度是: %d\n", ListLength(listHead)); // 输出:链表的长度是: 2
return 0;
}
```
阅读全文