给定一个初始为空的栈和一系列进栈、出栈操作,请编写程序输出经过这些操作后栈的元素。栈的元素值均为整数。使用c语言 输入格式:输入第一行为一个正整数n,表示操作个数;第二行为给出的n个整数,非0元素表示进栈,此非0元素即为进栈元素,0元素表示出栈。保证栈中元素个数不超过十个。 输出格式:第一行按出栈顺序输出所有出栈元素,以一个空格隔开;如果栈满时做进栈操作会输出“FULL”,如果栈空时做出栈操作会输出“EMPTY”;第二行中输出栈中所有元素,以一个空格隔开。末尾均有一个空格。
时间: 2024-02-22 21:55:09 浏览: 89
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
以下是使用 C 语言的代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 10
int stack[MAX_SIZE]; // 栈
int top = -1; // 栈顶指针
int main() {
int n, op, i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &op);
if (op != 0) {
// 进栈操作
if (top == MAX_SIZE - 1) {
printf("FULL ");
} else {
stack[++top] = op;
}
} else {
// 出栈操作
if (top == -1) {
printf("EMPTY ");
} else {
printf("%d ", stack[top--]);
}
}
}
printf("\n");
for (i = top; i >= 0; i--) {
printf("%d ", stack[i]);
}
printf("\n");
return 0;
}
```
首先定义了一个常量 `MAX_SIZE` 表示栈的最大容量为 10,以及一个整型数组 `stack` 作为栈。
接着读入操作数 `n`,并使用循环读入每个操作 `op`。如果 `op` 不为 0,则表示是进栈操作,判断栈是否已满,如果未满则将元素入栈,否则输出 "FULL" 表示栈已满。如果 `op` 为 0,则表示是出栈操作,判断栈是否已空,如果已空则输出 "EMPTY" 表示栈已空,否则将栈顶元素出栈并输出。
最后再次遍历栈,按 LIFO 的顺序输出栈中元素即可。
阅读全文