问题描述
使用3个队列,分别保留手机上最近10个,(0)未接来电、(1)已接来电、(2)已拨电话。
输入
全部通话记录,每行一条记录。
每条记录包含两个数字,第一个数代表记录类型,第二个数代表手机号码。
输出
分3列输出未接来电、已接来电、已拨电话。
列之间用空格分割,后接电话在最先输出,不足10条用0占位。
注:
1. 输入时用while,不要用for循环
2. 电话很长,用string比较方便
3. 直接在前面各加十个0,可以避免计数,判空
#include<iostream>
#include<stack>
using namespace std;
int main(){
int n;
string pn;
stack<string> a,b,c;
for(int i=0;i<10;i++){
a.push("0");
b.push("0");
c.push("0");
}
while(cin>>n>>pn){
if(n==0) a.push(pn);
if(n==1) b.push(pn);
if(n==2) c.push(pn);
}
for(int i=0;i<10;i++){
cout<<a.top()<<" "<<b.top()<<" "<<c.top()<<endl;
a.pop();
b.pop();
c.pop();
}
return 0;
}