C语言:设有一个不带表头结点的单链表L,设计一个递归算法count(L)求以L为首结点指针的单链表的结点个数
时间: 2024-10-26 09:03:14 浏览: 11
在C语言中,如果你想要设计一个递归算法`count(L)`来计算单链表`L`的节点个数,你可以考虑使用链表的特性,即每个节点通常包含一个指向下一个节点的指针。对于一个空链表(即`NULL`),它的长度就是0;而对于非空链表,它的长度就是当前节点加上其后继节点的长度。
下面是一个简单的递归函数实现:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data; // 节点的数据
struct Node* next; // 指向下一个节点的指针
};
int count(struct Node* L) {
// 基线条件:如果链表为空,返回0
if (L == NULL)
return 0;
// 递归条件:链表非空,则返回当前节点加上后继节点的数量
else
return 1 + count(L->next); // 1代表当前节点
}
int main() {
// 测试示例
struct Node* head = malloc(sizeof(struct Node));
head->data = 1;
head->next = malloc(sizeof(struct Node));
head->next->data = 2;
head->next->next = NULL;
printf("The length of the linked list is: %d\n", count(head));
return 0;
}
```
当你运行这个程序并传入链表的起始节点时,`count()` 函数会返回链表的实际节点数。
阅读全文