用C语言实现顺序栈的所有操作
时间: 2023-05-26 07:06:56 浏览: 66
以下是用C语言实现顺序栈的所有操作的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义栈的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储元素的数组
int top; // 栈顶指针(下标)
} SeqStack;
// 初始化栈
void InitStack(SeqStack *S) {
S->top = -1;
}
// 判断栈是否为空
int StackEmpty(SeqStack *S) {
if (S->top == -1)
return 1;
else
return 0;
}
// 判断栈是否已满
int StackFull(SeqStack *S) {
if (S->top == MAX_SIZE - 1)
return 1;
else
return 0;
}
// 元素入栈
int Push(SeqStack *S, int x) {
if (StackFull(S)) {
printf("栈已满,无法入栈\n");
return 0;
} else {
S->top++; // 栈顶指针加1
S->data[S->top] = x; // 将元素存入数组
return 1;
}
}
// 获取栈顶元素
int GetTop(SeqStack *S, int *x) {
if (StackEmpty(S)) {
printf("栈为空,无法获取栈顶元素\n");
return 0;
} else {
*x = S->data[S->top]; // 将栈顶元素赋值给x
return 1;
}
}
// 元素出栈
int Pop(SeqStack *S, int *x) {
if (StackEmpty(S)) {
printf("栈为空,无法出栈\n");
return 0;
} else {
*x = S->data[S->top]; // 将栈顶元素赋值给x
S->top--; // 栈顶指针减1
return 1;
}
}
// 打印栈的所有元素
void PrintStack(SeqStack *S) {
int i;
printf("栈中的元素为:");
for (i = S->top; i >= 0; i--)
printf("%d ", S->data[i]);
printf("\n");
}
int main() {
SeqStack S;
int x;
InitStack(&S);
Push(&S, 1);
Push(&S, 2);
Push(&S, 3);
Push(&S, 4);
Push(&S, 5);
PrintStack(&S);
Pop(&S, &x);
printf("弹出元素:%d\n", x);
PrintStack(&S);
GetTop(&S, &x);
printf("栈顶元素:%d\n", x);
return 0;
}
```