用C语言编写一个程序实现顺序栈的各种基本运算
时间: 2023-09-10 15:12:57 浏览: 157
好的,下面是用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;
}
// 判断栈是否为空
int StackEmpty(SqStack S) {
if (S.top == -1) {
return 1; // 栈为空
} else {
return 0; // 栈不为空
}
}
// 判断栈是否已满
int StackFull(SqStack S) {
if (S.top == MAXSIZE - 1) {
return 1; // 栈已满
} else {
return 0; // 栈未满
}
}
// 入栈
int Push(SqStack *S, int x) {
if (StackFull(*S)) {
return 0; // 栈已满,入栈失败
} else {
S->top++; // 栈顶指针加一
S->data[S->top] = x; // 入栈
return 1; // 入栈成功
}
}
// 出栈
int Pop(SqStack *S, int *x) {
if (StackEmpty(*S)) {
return 0; // 栈为空,出栈失败
} else {
*x = S->data[S->top]; // 取出栈顶元素
S->top--; // 栈顶指针减一
return 1; // 出栈成功
}
}
// 获取栈顶元素
int GetTop(SqStack S, int *x) {
if (StackEmpty(S)) {
return 0; // 栈为空,获取失败
} else {
*x = S.data[S.top]; // 取出栈顶元素
return 1; // 获取成功
}
}
int main() {
SqStack S;
InitStack(&S); // 初始化栈
int x; // 定义栈元素
int choice; // 定义操作选择
while (1) {
printf("1.入栈 2.出栈 3.获取栈顶元素 4.退出\n");
scanf("%d", &choice);
switch (choice) {
case 1: // 入栈
printf("请输入要入栈的元素:");
scanf("%d", &x);
if (Push(&S, x)) {
printf("入栈成功!\n");
} else {
printf("入栈失败,栈已满!\n");
}
break;
case 2: // 出栈
if (Pop(&S, &x)) {
printf("出栈成功,出栈元素为:%d\n", x);
} else {
printf("出栈失败,栈已空!\n");
}
break;
case 3: // 获取栈顶元素
if (GetTop(S, &x)) {
printf("栈顶元素为:%d\n", x);
} else {
printf("获取失败,栈为空!\n");
}
break;
case 4: // 退出
exit(0);
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
运行程序后可以进行入栈、出栈、获取栈顶元素等操作。
相关推荐

















