class TwoQueuesStack: def __init__(self): self.data = ArrayQueue() self.helpqueue = ArrayQueue() def push(self, pushint): self.data.add(pushint) def peek(self): if self.data.isEmpty(): raise RuntimeError("Stack is empty") while (len(self.data) != 1): self.helpqueue.add(self.data.poll()) res = self.data.poll() self.helpqueue.add(res) swap() return res def pop(self): if self.data.inEmpty(): raise RuntimeError("Stack is empty") while len(self.data) > 1: self.helpqueue.add(self.data.poll()) res = self.data.poll() swap() return res def swap(): tmp = self.data self.data = self.helpqueue self.helpqueue = tmp
class CatDogQueue(object): def __init__(self): self.dogqueue = ArrayQueue() self.catqueue = ArrayQueue() self.count = 0 def add(self,pet): if pet.get_pettype() == "dog": self.count += 1 petcount = PetCount(pet, self.count) self.dogqueue.push(petcount) elif pet.get_pettype() == "cat": self.count += 1 petcount = PetCount(pet,self.count) self.catqueue.push(petcount) else: raise RuntimeError("no pet type") def pollall(self): if not self.isCatEmpty() and not self.isDogEmpty(): if (self.dogqueue.peek().getCount()) < (self.catqueue.peek().getCount()): return self.dogqueue.poll() else: return self.catqueue.poll() elif self.isDogEmpty(): return self.catqueue.poll() elif self.isCatEmpty(): return self.dogqueue.poll() else: raise RuntimeError("err, queue is empty") def pollDog(self): if not self.isDogEmpty(): # print(type(self.dogqueue.poll())) return self.dogqueue.poll() else: raise RuntimeError("Dog queue is empty") def pollCat(self): if not self.isCatEmpty(): return self.catqueue.poll() else: raise RuntimeError("Cat queue is empty") def isCatEmpty(self): return self.catqueue.isEmpyt() def isDogEmpty(self): return self.dogqueue.isEmpyt()