实验任务
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。
现在有一个初始为空的队,定义两种操作
入队 INSERT x 针对入队操作要把 x 加到队尾。
出队 QUIT 如果此时队列为空输出 ERROR,不必执行出队操作。否则针对出队
操作要输出队头元素值并将队头指针加一。
数据输入
输入第一行包括一个正整数 N(0
数据输出
对于每个 POP 操作按照要求输出。
输入示例
10
INSERT 1
INSERT 2
QUIT
INSERT 4
INSERT 5
QUIT
QUIT
QUIT
QUIT
INSERT 1
输出示例
1
2
4
5
ERROR
解题思路
STL之queue
参考代码
#include <iostream>
#include <cstdio>
#include <string>
#include <queue>
using namespace std;
int main()
{
int n,i;
while (cin >> n){
queue<int> que;
getchar();
string opr;
int num;
for (i = 0;i < n;i++){
cin >> opr;
if (opr == "INSERT"){
cin >> num;
que.push(num);
}else if (opr == "QUIT"){
if (que.empty())
cout << "ERROR" << endl;
else{
cout << que.front() << endl;
que.pop();
}
}
}
}
return 0;
}