实现顺序栈的基本运算
时间: 2023-09-24 17:10:59 浏览: 112
顺序栈是一种基于数组实现的栈,其基本运算包括:
1. 初始化栈:创建一个空的数组作为栈的存储空间,同时初始化栈顶指针 top 为 -1,表示栈为空。
2. 入栈操作:将元素插入到栈顶位置,同时更新栈顶指针 top 的值。
3. 出栈操作:将栈顶元素弹出,同时更新栈顶指针 top 的值。
4. 获取栈顶元素:返回栈顶元素的值,但不改变栈的状态。
5. 判断栈是否为空:判断栈顶指针 top 是否为 -1,如果是则栈为空,否则栈非空。
下面是基于 C 语言实现的顺序栈的基本运算:
```c
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} SqStack;
// 初始化栈
void initStack(SqStack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(SqStack *s) {
return s->top == -1;
}
// 入栈操作
int push(SqStack *s, int x) {
if (s->top == MAXSIZE - 1) {
return 0; // 栈满,插入失败
}
s->top++;
s->data[s->top] = x;
return 1; // 插入成功
}
// 出栈操作
int pop(SqStack *s, int *x) {
if (isEmpty(s)) {
return 0; // 栈空,弹出失败
}
*x = s->data[s->top];
s->top--;
return 1; // 弹出成功
}
// 获取栈顶元素
int getTop(SqStack *s, int *x) {
if (isEmpty(s)) {
return 0; // 栈空,获取失败
}
*x = s->data[s->top];
return 1; // 获取成功
}
```
以上代码中,SqStack 结构体定义了一个数组和一个整型变量,数组用来存储栈的元素,整型变量 top 用来表示栈顶位置。initStack 函数用来初始化栈,isEmpty 函数用来判断栈是否为空,push 函数用来入栈,pop 函数用来出栈,getTop 函数用来获取栈顶元素。
阅读全文