题目描述 现有一个空栈ss,按顺序执行nn个操作序列,每个操作是下面的两种之一: 往ss中压入一个正整数kk 弹出ss的栈顶元素,同时将其输出 输入描述 第一行一个整数nn(1≤n≤1001≤n≤100),表示操作序列的个数; 接下来nn行,每行一个操作序列,格式为以下两种之一,分别对应入栈和出栈的操作,其中push k表示需要将整数kk(1≤k≤1001≤k≤100)压入栈,而pop表示需要弹出栈顶元素: push k pop 输出描述 输出多行,每次弹出时输出一行,表示弹出的栈顶元素。如果无法弹出栈顶元素,那么输出-1。用C语言
时间: 2024-02-16 09:12:40 浏览: 51
以下是一个简单的实现,可以参考:
```c
#include <stdio.h>
#define MAX_N 100
int stack[MAX_N];
int top = -1;
void push(int x) {
if (top == MAX_N - 1) {
printf("Stack overflow\n");
return;
}
stack[++top] = x;
}
int pop() {
if (top < 0) {
return -1;
}
return stack[top--];
}
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
char op[5];
scanf("%s", op);
if (op[0] == 'p') {
int x;
scanf("%d", &x);
push(x);
} else {
int x = pop();
if (x < 0) {
printf("-1\n");
} else {
printf("%d\n", x);
}
}
}
return 0;
}
```
注意:这里假设栈的最大大小为100。在push操作时,需要判断栈是否已满;在pop操作时,需要判断栈是否为空。如果栈为空,则返回-1。
阅读全文