c语言计算返回链栈中的结点个数代码
时间: 2024-10-22 10:16:18 浏览: 15
在 C 语言中,计算链栈(通常指单向链表实现的栈)中的节点个数,可以编写一个递归或非递归的函数。这里是一个简单的非递归版本的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 函数用于计算链栈的节点数
int count_nodes(Node* top) {
if (top == NULL) { // 判断链表是否为空
return 0; // 空链表,返回0
} else {
return 1 + count_nodes(top->next); // 非空链表,返回当前节点加上剩余节点数
}
}
int main() {
// 初始化链栈或其他方式填充节点
Node* stack = create_stack(); // 假设create_stack()创建了链栈
// 计算节点数并打印结果
int node_count = count_nodes(stack);
printf("链栈中有 %d 个节点。\n", node_count);
// 清理链表(如果有需要)
destroy_stack(stack);
return 0;
}
```
在这个例子中,`count_nodes`函数通过遍历链表的每个节点并递归地增加计数来计算总数。如果链表为空(`top`为`NULL`),则停止递归并返回0。
阅读全文