用C语言编写一个程序,写一个可以返回栈S中节点个数的算法int StackSize(SeqStack S)
时间: 2024-09-25 19:21:26 浏览: 56
在C语言中,为了计算一个顺序栈`SeqStack`中的元素个数,即栈的大小,你可以创建一个名为`StackSize`的函数。顺序栈通常通过数组实现,所以我们可以通过跟踪数组的索引来确定栈的深度。以下是这个函数的一个简单实现:
```c
#include <stdio.h>
// 定义一个顺序栈结构体
typedef struct SeqStack {
int* data; // 数据存储数组
int top; // 栈顶指针
int capacity; // 栈的最大容量
} SeqStack;
// 初始化顺序栈
void initStack(SeqStack* stack, int size) {
stack->data = (int*)malloc(size * sizeof(int));
stack->top = -1;
stack->capacity = size;
}
// 返回栈的节点个数(元素个数)
int StackSize(SeqStack* S) {
if (S->top == -1) { // 如果栈为空
return 0;
}
else {
return S->top + 1; // 栈顶元素不算在内,所以加1
}
}
// 其他辅助功能... (这里假设已包含)
int main() {
SeqStack myStack;
initStack(&myStack, 10); // 初始化栈
// ... 对栈进行操作 ...
printf("栈的大小(节点个数)是:%d\n", StackSize(&myStack));
return 0;
}
```
在这个例子中,我们首先定义了一个`SeqStack`结构体,它有数据存储数组`data`、栈顶指针`top`和最大容量`capacity`。`StackSize`函数检查`top`是否等于-1(表示栈空),然后返回`top+1`作为栈的元素个数。
阅读全文