C语言实现顺序栈代码,含详细注释
时间: 2023-10-26 11:12:34 浏览: 104
好的,以下是C语言实现顺序栈的代码,含详细注释:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义栈的最大容量为100
typedef struct {
int data[MAXSIZE]; // 存储栈中元素的数组
int top; // 栈顶指针
} SeqStack;
// 初始化栈
void InitStack(SeqStack *S) {
S->top = -1; // 栈顶指针初始化为-1,表示栈为空
}
// 判断栈是否为空
int StackEmpty(SeqStack S) {
if (S.top == -1) {
return 1; // 栈为空,返回1
} else {
return 0; // 栈不为空,返回0
}
}
// 判断栈是否已满
int StackFull(SeqStack S) {
if (S.top == MAXSIZE - 1) {
return 1; // 栈已满,返回1
} else {
return 0; // 栈未满,返回0
}
}
// 入栈操作
int Push(SeqStack *S, int x) {
if (StackFull(*S)) {
return 0; // 栈已满,插入失败,返回0
} else {
S->top++; // 栈顶指针加1
S->data[S->top] = x; // 将新元素插入到栈顶指针所指的位置
return 1; // 插入成功,返回1
}
}
// 出栈操作
int Pop(SeqStack *S, int *x) {
if (StackEmpty(*S)) {
return 0; // 栈为空,出栈失败,返回0
} else {
*x = S->data[S->top]; // 将栈顶元素赋值给x,以便返回
S->top--; // 栈顶指针减1
return 1; // 出栈成功,返回1
}
}
int main() {
SeqStack S;
int x, i;
InitStack(&S); // 初始化栈
// 入栈操作
for (i = 0; i < 5; i++) {
printf("请输入第%d个元素:", i + 1);
scanf("%d", &x);
if (Push(&S, x)) {
printf("入栈成功\n");
} else {
printf("入栈失败,栈已满\n");
}
}
// 出栈操作
while (!StackEmpty(S)) {
if (Pop(&S, &x)) {
printf("出栈成功,出栈元素为%d\n", x);
} else {
printf("出栈失败,栈为空\n");
}
}
return 0;
}
```
希望这个代码能够帮助到你!接下来,你想问我些什么呢?
阅读全文