用c语言编写顺序栈的初始化,判断栈是否为空,入栈和出栈
时间: 2023-05-28 21:07:08 浏览: 168
以下是C语言实现顺序栈的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} SqStack;
// 初始化栈
void InitStack(SqStack *S) {
S->top = -1; // 栈顶指针初始化为-1,表示空栈
}
// 判断栈是否为空
int StackEmpty(SqStack S) {
if (S.top == -1) {
return 1; // 栈为空
} else {
return 0; // 栈不为空
}
}
// 入栈
int Push(SqStack *S, int x) {
if (S->top == MAXSIZE - 1) {
return 0; // 栈满,入栈失败
} else {
S->top++; // 栈顶指针加1
S->data[S->top] = x; // 元素x入栈
return 1; // 入栈成功
}
}
// 出栈
int Pop(SqStack *S, int *x) {
if (S->top == -1) {
return 0; // 栈空,出栈失败
} else {
*x = S->data[S->top]; // 栈顶元素出栈,赋值给x
S->top--; // 栈顶指针减1
return 1; // 出栈成功
}
}
int main() {
SqStack S;
InitStack(&S); // 初始化栈
int i, x;
for (i = 1; i <= 5; i++) {
Push(&S, i); // 依次入栈1、2、3、4、5
}
printf("栈中元素依次为:");
while (!StackEmpty(S)) { // 当栈不为空时
Pop(&S, &x); // 出栈
printf("%d ", x); // 输出出栈的元素
}
printf("\n");
return 0;
}
```
输出结果为:栈中元素依次为:5 4 3 2 1
注:本示例代码中,栈满时入栈失败,栈空时出栈失败。实际应用中,需根据具体情况进行修改。
阅读全文