共享栈写出验满验空。进栈出栈的操作c语言
时间: 2024-12-13 15:18:20 浏览: 2
shunxubiao.rar_栈的顺序表_顺序栈,出栈
在 C 语言中,我们可以使用数组来实现一个简单的共享栈,同时提供验满和验空的功能。以下是一个基本的共享栈实现示例:
```c
#include <stdio.h>
#define MAX_SIZE 10 // 栈的最大容量
typedef struct {
int top; // 栈顶指针
int stack[MAX_SIZE]; // 栈的存储区
} SharedStack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isFull(Stack *s) {
return (s->top + 1) % MAX_SIZE == 0;
}
// 进栈(压入)
void push(Stack *s, int value) {
if (isFull(s)) {
printf("Error: Stack is full.\n");
return;
}
s->top++;
s->stack[s->top] = value;
}
// 出栈(弹出)
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Error: Stack is empty.\n");
return -1;
}
int poppedValue = s->stack[s->top];
s->top--;
return poppedValue;
}
int main() {
SharedStack myStack;
init(&myStack);
// 测试操作
push(&myStack, 10);
push(&myStack, 20);
while (!isEmpty(&myStack)) {
int value = pop(&myStack);
printf("Popped value: %d\n", value);
}
return 0;
}
```
在这个例子中,`init()` 函数初始化栈顶指针为 `-1` 表示空栈,`isEmpty()` 和 `isFull()` 分别检查栈是否为空或已满。`push()` 和 `pop()` 函数实现了进栈和出栈操作,并在必要时处理了栈满和栈空的情况。
阅读全文