例题5.3猫狗收容所

//还可以只定义猫狗两个队列,但是queue的数据类型为结构体animal,该结构体内部还有一个记录次序的int
#include <iostream>
#include <queue>
using namespace std;

int main()
{
queue<int> cat;//负数 
queue<int> dog;//正数 
queue<int> animal;
int n;cin>>n;
int m,t;

for(int i=1;i<=n;i++)
{
cin>>m>>t;

if(m==1&amp;&amp;t>0)//进来狗
{
dog.push(t);
animal.push(t);
}
else if(m==1&amp;&amp;t<0)
{
cat.push(t);
animal.push(t);
}
else if(m==2 &amp;&amp;t==0)//第一种收养方式 
{
if(!animal.empty())
{

int x=animal.front();//该动物的编号 
cout<<x<<&quot; &quot;;
animal.pop();
if(x>0)//最先的动物是狗
{
dog.pop();
}
else
{
cat.pop();
}

}
}
else if(m==2 &amp;&amp; t==1)//收养狗
{
if(!dog.empty())
{
int x=dog.front();
cout<<x<<&quot; &quot;;
dog.pop();
if(animal.front()==x)
{
animal.pop();
}
else
{
int count=0;//被临时后置的动物数量 
while(animal.front()!=x)
{
count++;
int y=animal.front();
animal.pop();
animal.push(y);
}
animal.pop();
int countt=animal.size()-count;
for(int i=1;i<=countt;i++)
{
int y=animal.front();
animal.pop();
animal.push(y);
}
}
}
 } 
 else if(m==2 &amp;&amp; t==-1)//收养猫 
{
if(!cat.empty())
{
int x=cat.front();
cout<<x<<&quot; &quot;;
cat.pop();
if(animal.front()==x)
{
animal.pop();
}
else
{
int count=0;//被临时后置的动物数量 
while(animal.front()!=x)
{
count++;
int y=animal.front();
animal.pop();
animal.push(y);
}
animal.pop();
int countt=animal.size()-count;
for(int i=1;i<=countt;i++)
{
int y=animal.front();
animal.pop();
animal.push(y);
}
}
}
 }

}

return 0; 
}
全部评论

相关推荐

09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
野猪不是猪🐗:还是太卑微了,什么叫放弃本次面试应该说经过评估,贵公司与自己不匹配,决定不再推进后续流程
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务