程序员代码面试指南-猫狗队列(c++)

实现一种猫狗队列-要求如下:程序员面试指南-左程云,page:10

#include <iostream>
#include <stack>
#include <vector>
#include <queue>
#include <string>

using namespace std;
class Pet{
public:
    Pet();
    Pet(string str){type= str;}
    string getPetType(){return type;}
private:
    string type;
};
class Dog : public Pet{
public:
    Dog():Pet("dog"){}
};
class Cat : public Pet{
public:
    Cat():Pet("cat"){}
};
class PetEnterQueue{
public:
    PetEnterQueue(Pet pet_t,long co){
        pet    = pet_t;
        number = co;
    }
    Pet getPet(){return pet;}
    long getNumber(){return number;}
    string getEnterPetType(){return pet.getPetType();}
private:
    Pet pet;
    long number;
};
class DogAndCatQue{
public:
     DogAndCatQue(){
         number = 0;
     }
     void add (Pet pet)
     {
         if(pet.getPetType().compare("dog") == 0)
             dogQ.push(PetEnterQueue(pet,number++));
         else if(pet.getPetType().compare("cat") == 0)
            catQ.push(PetEnterQueue(pet,number++));
         else
            cout << "pet not dog and cat!\n"<<endl;
     }
     Pet  pollAll()
     {
         if(!dogQ.empty() && catQ.empty())
         {
             if(dogQ.front().getNumber() < catQ.front().getNumber())
                  dogQ.pop();
             else
                catQ.pop();
         }
         else if(dogQ.empty()){catQ.pop();}
         else if(catQ.empty()){dogQ.pop();}
         else  cout << "queue is empty!\n"<<endl;
     }
     void pollDog()
     {
         if(!dogQ.empty()) {dogQ.pop();}
         else cout << "dog is empty!\n"<<endl;
     }
      void pollCat()
     {
         if(!catQ.empty()) {catQ.pop();}
         else cout << "cat is empty!\n"<<endl;
     }
     string QueFront()
     {
          if(!dogQ.empty() && catQ.empty())
         {
             if(dogQ.front().getNumber() < catQ.front().getNumber())
                  return dogQ.front().getEnterPetType();
             else
                return catQ.front().getEnterPetType();
         }
         else if(dogQ.empty()){return catQ.front().getEnterPetType();}
         else {return dogQ.front().getEnterPetType();}
     }
     bool isempty(){return (dogQ.empty() && catQ.empty());}
     bool isDogQueEmpty(){return dogQ.empty(); }
     bool isCatQueEmpty(){return catQ.empty(); }
private:
    queue<PetEnterQueue> catQ,dogQ;
    long number;
};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值