C++数据结构——排队等候

习题3-10 排队等候

某社会福利机构组织一项活动,参加的对象分为两类,一类是老年人(年龄≥60岁),另一类是年轻人(年龄<60岁)。但参加该项活动要排队等候,为了照顾老年人,排队等候时,老年人排到前面,年轻人排在后面,当老年人到来排队时,排到前面老年人排队部分的后面,年轻人到来排队时,排到整个队伍的最后。对于参加活动的n个人(5≤n≤15),建立并输出这n个人的排队的情况。

输入格式:

首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据第一行输入一个整数n,表示有n个人,第二行输入n个整数ai(18≤ai≤80),表示活动参加者的年龄。

输出格式:

对于每组测试,在一行上输出排队的队伍信息(年龄),每两个数据之间留一个空格。

输入样例:
2
5
29 71 56 63 23
8
39 48 43 21 49 32 56 27
输出样例:
71 63 29 56 23
39 48 43 21 49 32 56 27

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

解题代码

#include
using namespace std;
int main()
{
    int T,n;
    int num;
    list<int>young,old;
    cin>>T;
    while(T--){
    	cin>>n;
    	young.clear();
    	old.clear();
    	for(int i=0;i<n;i++){
    		cin>>num;
    		if(num>=60){
    			old.push_back(num);
			}else{
				young.push_back(num);
			}
		}
		int l=0;
		while(!old.empty()){
			if(l==0){
				cout<<old.front();
				l++;
			}else{
				cout<<" "<<old.front();
			}
			old.pop_front();
		}
		while(!young.empty()){
			if(l==0){
				cout<<young.front();
				l++;
			}else{
				cout<<" "<<young.front();
			}
			young.pop_front();
		}
		cout<<endl;
    }
}

解题思路

也比较简单吧,用队列写,我觉着用两个队列写比较简单,也没多用别的,用了STL
库,不想写的太复杂,暂时就这样,挺简单的,大于等于60的放一个队列,小于60的放一个队列,然后输出的时候先输出大于等于60的队列。

你可能感兴趣的:(C/C++算法数据结构,c++,数据结构)