日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

猫狗队列

發布時間:2023/11/29 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 猫狗队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

功能要求:

  • 用戶可以調用push方法將cat類或dog類的實例放入隊列中;
  • 用戶可以調用pollAll方法,將隊列中所有的實例按照進隊列的先后順序依次彈出;
  • 用戶可以調用pollDog方法,將隊列中dog類的實例按照進隊列的先后順序依次彈出;
  • 用戶可以調用pollCat方法,將隊列中cat類的實例按照進隊列的先后順序依次彈出;
  • 用戶可以調用isEmpty方法,檢查隊列中是否還有dog或cat的實例;
  • 用戶可以調用isDogEmpty方法,檢查隊列中是否有dog類的實例;
  • 用戶可以調用isCatEmpty方法,檢查隊列中是否有cat類的實例。

?

Pet.h

#ifndef _PET_H #define _PET_H #include <string> using namespace std;class Pet{ private:string type;public:Pet(){}Pet(string type){this->type = type;}string getPetType(){return type;} };class Dog :public Pet{ public:Dog() :Pet("dog") {} };class Cat :public Pet{ public:Cat() :Pet("cat") {} };#endif

PetEnterQueue.h

#ifndef _PETENTERQUEUE_H #define _PETENTERQUEUE_H #include "Pet.h" using namespace std;class PetEnterQueue { private:Pet pet;long count; public:PetEnterQueue(Pet pet, long count) {this->pet = pet;this->count = count;}Pet getPet() {return this->pet;}long getCount() {return this->count;}string getEnterPetType() {return this->pet.getPetType();} }; #endif

CatDogQueue.h

#ifndef _CATDOGQUEUE_H #define _CATDOGQUEUE_H #include"PetEnterQueue.h" #include"Pet.h" #include<iostream> #include<queue> using namespace std;class CatDogQueue { private:queue<PetEnterQueue> dogQ;queue<PetEnterQueue> catQ;long count;public:void push(Pet pet){if (pet.getPetType() == "dog") {this->dogQ.push(PetEnterQueue(pet, count++));}else if(pet.getPetType()=="cat"){this->catQ.push(PetEnterQueue(pet, count++));}}Pet popAll() {if (!catQ.empty() && !dogQ.empty()){if (dogQ.front().getCount() < catQ.front().getCount()){Pet tmp = dogQ.front().getPet();dogQ.pop();return tmp;}else{Pet tmp = catQ.front().getPet();catQ.pop();return tmp;}}else if (!catQ.empty()){Pet tmp = catQ.front().getPet();catQ.pop();return tmp;}else if (!dogQ.empty()){Pet tmp = dogQ.front().getPet();dogQ.pop();return tmp;}else{throw runtime_error("Error empty queue.");}}Dog popDog(){if (!dogQ.empty()){Pet tmpP = dogQ.front().getPet();Dog tmpD;Pet* pd = &tmpD;*pd = tmpP;dogQ.pop();return tmpD;}else{throw runtime_error("Error empty dog queue.");}}Cat popCat(){if (!catQ.empty()){Pet tmpP = catQ.front().getPet();Cat tmpC;Pet* pc = &tmpC;*pc = tmpP;catQ.pop();return tmpC;}else{throw runtime_error("Error empty cat queue.");}}bool isEmpty(){return dogQ.empty() && catQ.empty();}bool isDogEmpty(){return dogQ.empty();}bool isCatEmpty(){return catQ.empty();} };#endif

test.cpp

#include <iostream> #include "CatDogQueue.h"using namespace std; int main() {CatDogQueue test;if (test.isEmpty())cout << "All queue is empty!" << endl;test.push(Dog());if (!test.isEmpty())cout << "All queue is not empty!" << endl;if (!test.isDogEmpty())cout << "Dog queue is not empty!" << endl;if (test.isCatEmpty())cout << "Cat queue is Empty!" << endl;for (int i = 0; i < 2; i++){test.push(Cat());test.push(Dog());}cout << "popAll:" << test.popAll().getPetType() << endl;cout << "popDog:" << test.popDog().getPetType() << endl;cout << "popCat:" << test.popCat().getPetType() << endl;cout << "popAll:" << test.popAll().getPetType() << endl;cout << "popAll:" << test.popAll().getPetType() << endl;if (test.isEmpty())cout << "All queue is empty!" << endl;return 0;

?

轉載于:https://www.cnblogs.com/MuZiShiYe/p/11255490.html

總結

以上是生活随笔為你收集整理的猫狗队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。