2-11 顺序队列的3个操作

分数 6

作者 陈越

单位 浙江大学

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

输入格式:

输入首先在第一行给出正整数 n(≤104);随后一行给出 n+1 个 int 范围内的整数,数字间以空格分隔。

输出格式:

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

输入样例:

5
1 2 3 4 5 6

输出样例:

错误:队列已满。
1
2
3
4
5
错误:队列为空。
-1
错误:队列为空。

解析(直接用queue库)

#include <iostream>
#include <queue>
using namespace std;
int main() {
int n;
cin >> n;
int i = 0;
queue<int> qu;
for (int i = 0; i < n + 1; ++i) {
int in;
cin >> in;
if (qu.size() < n) {
qu.push(in);
}
else {
cout << "错误:队列已满。" << endl;
}
}
while (!qu.empty()) {
cout << qu.front() << endl;
qu.pop();
}
cout << "错误:队列为空。\n-1\n错误:队列为空。";
}

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

分数 6

作者 陈越

单位 浙江大学

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

输入格式:

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

输出格式:

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

解析(直接用queue库)

#include <iostream>
#include <queue>
using namespace std;
int main() {
int n;
cin >> n;
int i = 0;
queue<int> qu;
for (int i = 0; i < n + 1; ++i) {
int in;
cin >> in;
if (qu.size() < n) {
qu.push(in);
}
}
while (!qu.empty()) {
cout << qu.front() << endl;
qu.pop();
}
cout << "错误:队列为空。\n-1\n错误:队列为空。";
}