日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

猫狗队列求解

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

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

題目:

寵物、貓和狗的類如下:

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();}} }

總結

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

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