用c语言编写一个程序实现顺序栈的初始化,判断栈空否,入栈和出栈
时间: 2023-05-29 11:04:06 浏览: 115
用c语言来实现顺序栈
5星 · 资源好评率100%
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct {
ElemType data[MAXSIZE];
int top; // 栈顶指针
} SqStack;
// 初始化栈
void InitStack(SqStack* S) {
S->top = -1; // 初始化栈顶指针为-1
}
// 判断栈是否为空
int StackEmpty(SqStack* S) {
return S->top == -1;
}
// 入栈
int Push(SqStack* S, ElemType e) {
if (S->top == MAXSIZE - 1) { // 栈满
return 0;
}
S->top++; // 栈顶指针加1
S->data[S->top] = e; // 将元素e压入栈顶
return 1;
}
// 出栈
int Pop(SqStack* S, ElemType* e) {
if (S->top == -1) { // 栈空
return 0;
}
*e = S->data[S->top]; // 将栈顶元素弹出
S->top--; // 栈顶指针减1
return 1;
}
int main() {
SqStack S;
InitStack(&S);
printf("栈是否为空:%d\n", StackEmpty(&S));
Push(&S, 1);
Push(&S, 2);
Push(&S, 3);
printf("栈是否为空:%d\n", StackEmpty(&S));
ElemType e;
Pop(&S, &e);
printf("出栈元素:%d\n", e);
Pop(&S, &e);
printf("出栈元素:%d\n", e);
Pop(&S, &e);
printf("出栈元素:%d\n", e);
printf("栈是否为空:%d\n", StackEmpty(&S));
return 0;
}
```
阅读全文