采用顺序存储实现栈的初始化、入栈、出栈、销毁栈操作
时间: 2023-05-12 09:06:18 浏览: 167
采用顺序存储实现栈的初始化、入栈、出栈操作
好的,以下是采用顺序存储实现栈的初始化、入栈、出栈、销毁栈操作的代码:
```c
#define MAXSIZE 100 // 定义栈的最大容量
typedef struct {
int data[MAXSIZE]; // 存储栈中元素的数组
int top; // 栈顶指针
} SqStack;
// 初始化栈
void InitStack(SqStack *s) {
s->top = -1; // 栈顶指针初始化为-1,表示栈为空
}
// 判断栈是否为空
int IsEmpty(SqStack *s) {
return s->top == -1;
}
// 判断栈是否已满
int IsFull(SqStack *s) {
return s->top == MAXSIZE - 1;
}
// 入栈操作
int Push(SqStack *s, int x) {
if (IsFull(s)) {
return 0; // 栈已满,入栈失败
}
s->top++; // 栈顶指针加1
s->data[s->top] = x; // 将元素x压入栈顶
return 1; // 入栈成功
}
// 出栈操作
int Pop(SqStack *s, int *x) {
if (IsEmpty(s)) {
return 0; // 栈为空,出栈失败
}
*x = s->data[s->top]; // 将栈顶元素弹出
s->top--; // 栈顶指针减1
return 1; // 出栈成功
}
// 销毁栈
void DestroyStack(SqStack *s) {
s->top = -1; // 栈顶指针初始化为-1,表示栈为空
}
```
希望这个代码能够帮到你!
阅读全文