想要见识一下,如何将数据结构中学习到的数据结构应用到实际中,转化为编程
- 猫狗收容所

- 两个队列分别收容猫和狗,不仅收容他们的信息还要增加进入次序的信息
- 此时队列的元素已经不是简单的整型了
#include<queue>
#include<cstdio>
using namespace std;
struct Animal {
int num;
int seq;
};
int main()
{
queue<Animal> catQueue;
queue<Animal> dogQueue;
int seq=0;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int method,para;
scanf("%d%d",&method,¶);
if(method==1){
//非收养
if(para>0){
//来的是狗
Animal dog;
dog.num=para;
dog.seq=seq;
++seq;
dogQueue.push(dog);
}else{
//来的是猫
Animal cat;
cat.num=para;
cat.seq=seq;
++seq;
catQueue.push(cat);
}
}else{
//收养,得考虑队列空不空
if(para==0){
//采用第一种收养方式
if(catQueue.empty()&&dogQueue.empty()){
//猫狗队列都是空
continue;
}else if(catQueue.empty() || !dogQueue.empty() && dogQueue.front().seq<catQueue.front().seq){
//狗队列非空,收养狗
printf("%d ",dogQueue.front().num);
dogQueue.pop();
}else{
//猫队列非空
printf("%d ",catQueue.front().num);
catQueue.pop();
}
}else if(para==1){
//只选择狗
if(dogQueue.empty()){
continue;
}else{
printf("%d ",dogQueue.front().num);
dogQueue.pop();
}
}else{
//只选择猫
if(catQueue.empty()){
continue;
}else{
printf("%d ",catQueue.front().num);
catQueue.pop();
}
}
}
}
printf("\n");
return 0;
}