用C语言写一段代码 其中用静态数组的办法求顺序栈的长度
时间: 2024-10-16 12:04:38 浏览: 22
大一c语言数组实验心得.docx
在C语言中,我们可以使用静态数组来表示一个顺序栈,并通过比较栈顶元素和栈底元素的值来确定栈的长度。下面是一个简单的示例,假设我们有一个整数类型的静态数组作为栈:
```c
#include <stdio.h>
#define MAX_SIZE 10 // 定义栈的最大容量
// 定义顺序栈结构体
typedef struct {
int stack[MAX_SIZE]; // 静态数组作为栈存储空间
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s- 1;
}
// 入栈操作
void push(Stack *s, int value) {
if (is_full(s)) {
printf("Stack is full.\n");
return;
}
s->stack[++s->top] = value;
}
// 出栈操作
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
return -1; // 返回一个特殊值表示栈空
}
return s->stack[s->top--];
}
// 求栈长度
int get_length(Stack *s) {
return s->top + 1; // 因为top包含栈顶元素的位置,加1得到实际元素个数
}
int main() {
Stack myStack;
init(&myStack);
// 添加一些元素到栈里
push(&myStack, 10);
push(&myStack, 20);
push(&myStack, 30);
// 输出栈长
int length = get_length(&myStack);
printf("The stack length is: %d\n", length);
// 示例完整流程,你可以根据需要修改这部分代码
while (!is_empty(&myStack)) {
printf("Popped element: %d\n", pop(&myStack));
}
return 0;
}
```
在这个例子中,`get_length`函数会返回当前栈的实际元素个数。注意,在实际应用中,如果你不确定栈的大小,可能会考虑动态分配数组来替代静态数组,以避免预设大小的限制。
阅读全文