用c语言试编写在带头结点的单链表结构上实现计算线性表长度的算法 LENGTH(L)。
时间: 2024-10-12 13:14:54 浏览: 27
在C语言中,计算带头结点的单链表长度(LENGTH(L))需要遍历整个链表,直到找到最后一个元素。这里是一个简单的实现:
```c
#include <stdio.h>
typedef struct Node { // 定义链表节点结构
int data;
struct Node* next;
} Node;
// 定义计算链表长度的函数
int LENGTH(Node* L) {
if (L == NULL) { // 空链表的情况
return 0;
} else {
int len = 1; // 初始化长度为1,因为第一个节点不算入长度
Node* current = L->next; // 从第二个节点开始遍历
while (current != NULL) { // 遍历直到链表结束
len++;
current = current->next;
}
return len;
}
}
int main() {
// 创建示例链表
Node* head = (Node*)malloc(sizeof(Node)); // 创建链表头节点
head->data = 1;
head->next = (Node*)malloc(sizeof(Node));
head->next->data = 2;
head->next->next = (Node*)malloc(sizeof(Node));
head->next->next->data = 3;
int list_length = LENGTH(head);
printf("Length of the linked list: %d\n", list_length);
free(head->next->next); // 释放内存
free(head->next);
free(head);
return 0;
}
```
这个函数首先检查链表是否为空,如果为空则返回0。接着,它从第二个节点开始遍历链表,每次迭代将`len`加一,直到遍历完所有节点。
阅读全文