算法学习10-猫狗队列
猫狗队列
问题描述
宠物、狗和猫的类如下:
<pet.h>
#ifndef _PET_H
#define _PET_H
#include <string>
using namespace std;
class Pet
{
public:
Pet(string type)
{
this->type = type;
}
string getPetType()
{
return type;
}
private:
string type;
};
class Dog:public Pet
{
public:
Dog():Pet("dog"){
}
};
class Cat:public Pet
{
public:
Cat():Pet("cat"){
}
};
#endif
实现一种猫狗队列的结构,要求如下:
- 用户可以调用 push 的方法,将 cat 类或者 dog 类的实例放入队列中;
- 用户可以调用 popAll 的方法,将队列中所有的实例按照进队列的先后顺序依次弹出;
- 用户可以调用 popDog 的方法,将队列中的 dog 类实例按照进队列的先后顺序依次弹出;
- 用户可以调用 popCat 的方法,将队列中的 cat 类实例按照进队列的先后顺序依次弹出;
- 用户可以调用 isEmpty 的方法,检查队列中是否还有 dog 或者 cat 类的实例;
- 用户可以调用 isDogEmpty 的方法,检查队列中是否还有 dog 类的实例;
- 用户可以调用 isCatEmpty 的方法,检查队列中是否还有 cat 类的实例。
代码实现
1.带时间戳的宠物声明及实现代码<petstamp.h>
#ifndef _PETSTAMP_H
#define _PETSTAMP_H
#include "pet.h"
class PetStamp
{
public:
PetStamp(Pet p,long count)
:pet(p)
{
this->count=count;
}
Pet getPet()
{
return pet;
}
long getCount()
{
return count;
}
string getPetType()
{
return pet.getPetType(