共享栈,写出验满验空,进栈,出栈操作 用c语言编写
时间: 2024-12-02 09:20:37 浏览: 11
共享栈是一种数据结构,它允许多个函数或线程同时访问和修改栈顶元素,通过共用一个底层的数据结构来实现。以下是基本的共享栈操作的C语言实现,包括验满、验空、入栈和出栈:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_SIZE 100 // 定义栈的最大容量
typedef struct {
int data[MAX_SIZE];
int top; // 栈顶指针
} SharedStack;
// 初始化共享栈
SharedStack* createStack() {
if (top >= MAX_SIZE) { // 验证是否已满
printf("Stack is full.\n");
return NULL;
}
SharedStack* stack = (SharedStack*)malloc(sizeof(SharedStack));
stack->top = -1; // 初始化栈顶为-1表示为空
return stack;
}
// 验空
bool isEmpty(SharedStack* stack) {
return stack-1;
}
// 验满
bool isFull(SharedStack* stack) {
return stack->top == MAX_SIZE - 1;
}
// 进栈(入栈)
void push(SharedStack* stack, int value) {
if (!isFull(stack)) {
stack->data[++stack->top] = value;
printf("Pushed %d to the stack.\n", value);
} else {
printf("Stack is full, can't push.\n");
}
}
// 出栈(出栈)
int pop(SharedStack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return -1; // 返回错误值表示空栈
} else {
return stack->data[stack->top--]; // 返回并移除栈顶元素
}
}
int main() {
SharedStack* myStack = createStack();
if (myStack != NULL) {
push(myStack, 1);
push(myStack, 2);
printf("%d popped from the stack: %d\n", pop(myStack), myStack->data[stack->top]);
}
return 0;
}
```
在这个例子中,我们创建了一个`SharedStack`结构,包含了数组`data`和一个指向栈顶的整型变量`top`。每个操作都检查了栈的状态(空、满),并在必要时进行了相应的提示。
阅读全文