实现一个函数,求链表表长c语言
时间: 2024-10-20 13:02:46 浏览: 28
链表-使用C语言实现循环链表.zip
在C语言中,你可以通过遍历链表的方式来计算其长度。这里是一个简单的示例,定义了一个`ListNode`结构体表示链表节点,并有一个函数`getNodeCount`来计算链表长度:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int data; // 节点值
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 函数声明,用于计算链表长度
int getNodeCount(ListNode* head);
// 初始化一个空链表
ListNode* createList() {
return NULL;
}
// 插入节点到链表
void insertNode(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
// 打印链表
void printList(ListNode* head) {
ListNode* current = head;
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next;
}
printf("NULL\n");
}
// 计算链表长度
int getNodeCount(ListNode* head) {
if (head == NULL) {
return 0;
} else {
int count = 1; // 初始化计数器
ListNode* temp = head;
while (temp->next != NULL) {
count++;
temp = temp->next;
}
return count;
}
}
int main() {
ListNode* head = createList();
insertNode(&head, 1); // 添加节点
insertNode(&head, 2);
insertNode(&head, 3);
printf("链表长度: %d\n", getNodeCount(head));
printList(head); // 打印链表
return 0;
}
```
在这个例子中,我们首先创建一个链表,然后通过`getNodeCount`函数获取它的长度。如果链表为空(即头指针为NULL),则返回0;否则,从头开始遍历,每遇到一个非NULL的`next`就计数加一。
阅读全文