求广义表的长度代码实现C语言
时间: 2024-11-04 15:13:51 浏览: 26
数据结构(c语言版).doc【精华】
在C语言中,求解广义表(List)的长度通常涉及到动态内存分配和递归处理。下面是一个简单的例子,假设广义表存储在一个结构体`ListNode`中,每个节点包含一个数据元素和指向下一个节点的指针:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义广义表节点结构体
typedef struct ListNode {
int data; // 数据元素
struct ListNode* next; // 指向下一个节点的指针
} List;
// 函数用于计算广义表的长度
size_t list_length(List* head) {
if (head == NULL) { // 如果列表为空,返回0
return 0;
} else {
// 返回当前节点加上剩余列表的长度
return 1 + list_length(head->next);
}
}
int main() {
// 创建一个示例广义表
List* example = (List*)malloc(sizeof(List));
example->data = 1;
example->next = (List*)malloc(sizeof(List));
example->next->data = 2;
example->next->next = (List*)malloc(sizeof(List));
example->next->next->data = 3;
example->next->next->next = NULL; // 表尾设置为NULL
// 计算并打印广义表长度
size_t length = list_length(example);
printf("广义表长度: %zu\n", length);
free(example); // 释放内存
return 0;
}
```
阅读全文