PTA(栈和队列)2-12 链式队列的3个操作

2-12 链式队列的3个操作

分数 6

作者 陈越

单位 浙江大学

请编写程序,将 n 个整数顺序压入容量无限制的(链式)队列,随后执行 n+1 次取队首并出队的操作。

输入格式:

输入首先在第一行给出正整数 n;随后一行给出 n 个 int 范围内的整数,数字间以空格分隔。题目保证有 n 个元素的(链式)队列不会超过题目的空间限制。

输出格式:

将输入的n 个整数顺序压入队列,随后执行 n+1 次取队首并出队的操作,输出取出的元素的值,每行一个。
注意:当队列为空时,取队首和出队操作应该不执行,并在一行中输出错误信息 错误:队列为空。。空队列取队首应返回 -1。

输入样例:

1
2
5
1 2 3 4 5

输出样例:

1
2
3
4
5
6
7
8
1
2
3
4
5
错误:队列为空。
-1
错误:队列为空。

我的答案

  • 逆天,跟上个题几乎一样,答案居然对了,虽然没用链队列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <queue>

using namespace std;

int main() {
int n;
cin >> n;
queue<int> queue;
int num;
for (int i = 0; i < n; ++i) {
cin >> num;
queue.push(num);
}
// 输入第n+1个
if (queue.size() == n) {
cout << "错误:队列已满。" << endl;
}
// 输出出队元素
for (int i = 0; i < n + 1; ++i) {
if (queue.empty()) {
cout << "错误:队列为空。" << endl;
cout << "-1" << endl;
} else {
cout << queue.front() << endl;
queue.pop();
}
}
cout << "错误:队列为空。";
}