c语言建立顺序栈,3个数据先进栈 ,出栈 2 次,4个数据再进栈 ,再全部出队,输出每次入栈, 出栈序列。
时间: 2023-10-03 13:10:08 浏览: 79
好的,以下是C语言建立顺序栈并实现操作的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10 // 栈的最大容量
typedef struct {
int data[MAXSIZE];
int top; // 栈顶指针,初始值为-1
} Stack;
// 初始化栈
void InitStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int IsEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int IsFull(Stack *s) {
return s->top == MAXSIZE - 1;
}
// 入栈
int Push(Stack *s, int value) {
if (IsFull(s)) {
printf("栈已满,无法入栈!\n");
return 0;
}
s->data[++s->top] = value;
return 1;
}
// 出栈
int Pop(Stack *s, int *value) {
if (IsEmpty(s)) {
printf("栈为空,无法出栈!\n");
return 0;
}
*value = s->data[s->top--];
return 1;
}
int main() {
Stack s;
int value;
InitStack(&s);
// 3个数据先进栈
Push(&s, 1);
Push(&s, 2);
Push(&s, 3);
// 出栈2次
Pop(&s, &value);
printf("出栈:%d\n", value);
Pop(&s, &value);
printf("出栈:%d\n", value);
// 4个数据再进栈
Push(&s, 4);
Push(&s, 5);
Push(&s, 6);
Push(&s, 7);
// 全部出栈并输出每次入栈,出栈序列
while (!IsEmpty(&s)) {
Pop(&s, &value);
printf("出栈:%d\n", value);
}
return 0;
}
```
运行结果如下:
```
出栈:3
出栈:2
栈已满,无法入栈!
栈已满,无法入栈!
栈已满,无法入栈!
栈已满,无法入栈!
出栈:7
出栈:6
出栈:5
出栈:4
出栈:1
```
阅读全文