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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

猫狗队列求解

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

這道題主要鍛煉了類的包裝,考察面向對象的思想

題目:

寵物、貓和狗的類如下:

public class Pet{private String type;public Pet(String type){this.type = type;}public String getPetType(){return this.type;} } public class Dog extends Pets{public Dog(){super("Dog");} } public class Cat extends Pet{public Cat(){super("Cat");} }

實現一種貓狗隊列的結構,要求如下:
用戶可以調用add方法將cat類或dog類的實例放入隊列中;
用戶可以調用pollAll方法,將隊列中所有的實例按照進隊列的先后順序依次彈出;
用戶可以調用pollDog方法,將隊列中Dog類的實例按照進隊列的先后順序依次彈出;
用戶可以調用pollCat方法,將隊列中Cat類的實例按照進隊列的先后順序依次彈出;
用戶可以調用isEmpty方法,檢查隊列中是否還有dog或cat的實例;
用戶可以調用isDogEmpty方法,檢查隊列中是否還有dog類的實例
用戶可以調用isCatEmpty方法,檢查隊列中是否還有cat類的實例
要求所有實現的方法,時間復雜度都為O(1)

public class DogCat{public static class Pet{private String type;public Pet(String type){this.type = type;}public String getPetType(){return this.type;}}public static class Dog extends Pet{public Dog(){super("dog");}}public static class Cat extends Pet{public Cat(){super("cat");}}public static class PetEnterQueue{private Pet pet;private long count;public PetEnterQueue(Pet pet, long count){this.pet = pet;this.count = count;}public Pet getPet{return this.pet;}public long getCount(){return this.count;}public String getEnterPetType(){return this.pet.getPetType();}}public static class DogCatQueue{private Queue<PetEnterQueue> dogQ;private Queue<PetEnterQueue> catQ;private long count;public DogCatQueue(){this.dogQ = new LinkedList<PetEnterQueue>();this.catQ = new LinkedList<PetEnterQueue>();this.count = 0;}public void add(Pet pet){if(pet.getPetType().equals("dog")){this.dogQ.add(new PetEnterQueue(pet, this.count++));}else if(pet.getPetType().equals("cat")){this.catQ.add(new PetEnterQueue(pet, this.count++));}else{throw new RuntimException("No dogs or cats");}}public Pet pollAll(){if(!this.dogQ.isEmpty() && !this.catQ.isEmpty()){if(this.dogQ.peek().getCount() < this.catQ.peek().getCount()){return this.dogQ.poll().getPet();}else{return this.catQ.poll().getPet();}}else if(!this.dogQ.isEmpty()){return this.dogQ.poll().getPet();}else if(!this.catQ.isEmpty()){return this.catQ.poll().getPet();}else{throw new RuntimeException("queue is empty!");``}}public Dog pollDog(){if(!this.isDogQueueEmpty()){return (Dog)this.dogQ.poll().getPet();}else{throw new RuntimeException("Dog queue is empty!");}}public Cat pollCat(){if(!this.isCatQueueEmpty()){return (Cat)this.catQ.poll().getPet();}else{throw new RuntimeException("Cat3 queue is empty!");}}public boolean isEmpty(){return this.dogQ.isEmpty() && this.catQ.isEmpty();}public boolean isDogQueueEmpty(){return this.dogQ.isEmpty();}public boolean isCatQueueEmpty(){return this.catQ.isEmpty();}} }

總結

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

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