生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法之猫狗队列
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)據(jù)結(jié)構(gòu)與算法之貓狗隊(duì)列
目錄
貓狗隊(duì)列
1. 貓狗隊(duì)列
描述
代碼實(shí)現(xiàn)
import java
.util
.LinkedList
;
import java
.util
.Queue
;public class Code_DogCatQueue {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 RuntimeException("err, not dog or cat");}}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("err, 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();} elsethrow new RuntimeException("Cat 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();}}public static void main(String
[] args
) {DogCatQueue test
= new DogCatQueue();Pet dog1
= new Dog();Pet cat1
= new Cat();Pet dog2
= new Dog();Pet cat2
= new Cat();Pet dog3
= new Dog();Pet cat3
= new Cat();test
.add(dog1
);test
.add(cat1
);test
.add(dog2
);test
.add(cat2
);test
.add(dog3
);test
.add(cat3
);test
.add(dog1
);test
.add(cat1
);test
.add(dog2
);test
.add(cat2
);test
.add(dog3
);test
.add(cat3
);test
.add(dog1
);test
.add(cat1
);test
.add(dog2
);test
.add(cat2
);test
.add(dog3
);test
.add(cat3
);while (!test
.isDogQueueEmpty()) {System
.out
.println(test
.pollDog().getPetType());}while (!test
.isEmpty()) {System
.out
.println(test
.pollAll().getPetType());}}}
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生
總結(jié)
以上是生活随笔為你收集整理的数据结构与算法之猫狗队列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。