算法设计系列-06

题目

现定义宠物、猫、狗如下:

算法设计系列-06

要求实现猫狗队列,能够提供如下方法:

  • add方法:将cat或dog实例放入队列中
  • pool方法: 将队列中实例按照先后顺序弹出
  • poolDog方法:将队列中的dog类按照先后顺序弹出
  • poolCat方法:将队列中cat类按照先后顺序弹出
  • isEmpty方法:检查队列中是否还有cat或dog的实例
  • isDogEmpty方法:检查队列中是否有dog实例
  • isCatEmpty方法:检查队列中是否有cat实例

思路分析

看了要求,使用队列结构是毋庸置疑的,那么队列结构该如何放数据呢?

整体的一个队列?那单独弹出猫或狗时,借用一个辅助队列,将数据依次弹出,然后拿到弹出的第一个猫或狗,将其返回。

猫和狗分开,两个队列?单独弹出时很简单,要想整体弹出该如何是好呢?是从猫队列拿还是从狗队列拿呢?可以另外创建一个结构,标注每个元素进入队列的先后顺序,在出队列时比较以下就可以了。

那么上面两个设计方法要选择哪个呢?整体一个队列十分耗时,两个队列耗费了空间。我优先选择了两个队列的设计方法。

好,设计方法有了,如何封装宠物进队列的先后顺序呢?使用一个整型,从0开始,依次递增就好了(哪个小哪个就是更先进入队列的),将其封装为一个类,如下:

算法设计系列-06

之后在实现的类中,队列使用此类即可,简单的Java代码实现如下:

算法设计系列-06


分享到:


相關文章: