编写顺序栈算法(包括初始化,入栈,出栈,判断栈满,判断栈空,取栈顶元素)
时间: 2024-01-31 10:02:28 浏览: 88
lianzhan.rar_栈_链栈
好的,以下是顺序栈的算法实现:
1. 初始化栈
```
#define MAXSIZE 100 // 定义栈的最大长度
typedef struct {
int data[MAXSIZE]; // 存放栈元素
int top; // 栈顶指针
} SqStack;
void InitStack(SqStack *s) {
s->top = -1; // 初始栈顶指针为-1,表示栈为空
}
```
2. 判断栈空
```
int IsEmpty(SqStack *s) {
return s->top == -1;
}
```
3. 判断栈满
```
int IsFull(SqStack *s) {
return s->top == MAXSIZE - 1;
}
```
4. 入栈
```
int Push(SqStack *s, int x) {
if (IsFull(s)) {
return 0; // 栈满,插入失败
}
s->top++; // 栈顶指针加1
s->data[s->top] = x; // 将元素x插入到栈顶
return 1; // 插入成功
}
```
5. 出栈
```
int Pop(SqStack *s, int *x) {
if (IsEmpty(s)) {
return 0; // 栈空,弹出失败
}
*x = s->data[s->top]; // 将栈顶元素赋值给x
s->top--; // 栈顶指针减1
return 1; // 弹出成功
}
```
6. 取栈顶元素
```
int GetTop(SqStack *s, int *x) {
if (IsEmpty(s)) {
return 0; // 栈空,取栈顶元素失败
}
*x = s->data[s->top]; // 将栈顶元素赋值给x
return 1; // 取栈顶元素成功
}
```
阅读全文