c语言。本题要求实现一个函数,求带头结点的单链表的表长。
时间: 2024-10-29 10:09:56 浏览: 42
C语言是一种广泛使用的通用编程语言,它最初由丹尼斯·里奇(Dennis Ritchie)和肯·汤普逊(Ken Thompson)设计,主要用于系统级编程和嵌入式开发。对于您的问题,要在C语言中实现一个函数计算单链表的长度,您可以创建一个名为`getLinkedListLength`的函数。链表通常包含一个头节点(head),每个节点有一个数据域(data)和指向下一个节点的指针(next)。
下面是一个简单的函数示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data; // 节点的数据
struct Node* next; // 指向下一个节点的指针
} Node;
// 函数用于获取链表长度
size_t getLinkedListLength(Node* head) {
if (head == NULL) { // 如果链表为空,则返回0
return 0;
} else {
size_t length = 1; // 初始化长度为1(因为头节点也算)
Node* current = head;
while (current->next != NULL) { // 遍历直到链表结束
length++;
current = current->next;
}
return length;
}
}
// 示例:创建并测试链表
Node* createList(int arr[], size_t n) {
Node* head = (Node*)malloc(sizeof(Node));
head->data = arr[0];
head->next = NULL;
for (size_t i = 1; i < n; i++) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = arr[i];
newNode->next = head->next;
head->next = newNode;
}
return head;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
size_t n = sizeof(arr) / sizeof(arr[0]);
Node* listHead = createList(arr, n);
size_t length = getLinkedListLength(listHead);
printf("链表的长度是:%zu\n", length);
// 清理内存
Node* temp = listHead;
while (temp != NULL) {
Node* nextTemp = temp->next;
free(temp);
temp = nextTemp;
}
return 0;
}
```
在这个例子中,首先创建了一个链表,然后通过`getLinkedListLength`函数计算其长度,并将结果打印出来。记得处理好内存分配和释放,防止内存泄漏。
阅读全文