一,問題描述
二,問題分析
整個問題就是模擬的一個過程,難點在於對命令的處理
1.由於要清空整個隊列,採用deque.clear()函數
2.命令的輸入不同,採取不同的對策
三,問題解答
#include<iostream>
#include<string>
#include<deque>
using namespace std;
int main() {
int n, m; //n:隊列數 m:指令數
deque<int> list[10001];
while (cin >> n >> m) {
for (int i = 0; i < m; i++) {
string order;
cin >> order;
if (order == "INIT") { //如果輸入的命令是INIT
for (int j = 1; j <= n; j++) {
list[j].clear(); //清空隊列
}
}
if (order == "PUSH") { //如果輸入的命令是PUSH
int listid;
int value;
cin >> listid >> value; //依次輸入隊列號,和值
list[listid].push_back(value);
}
if (order == "POP") { //如果輸入的命令是POP
int listid; //輸入要處理的隊列號
cin >> listid;
if (list[listid].empty() == 1) { //如果該隊列爲空
cout<<"NULL"<<endl;
}
else {
cout << list[listid].front() << endl;//隊列不爲空的情況
list[listid].pop_front();
}
}
}
}
return 0;
}