算法設計系列-06

題目

現定義寵物、貓、狗如下:

算法設計系列-06

要求實現貓狗隊列,能夠提供如下方法:

  • add方法:將cat或dog實例放入隊列中
  • pool方法: 將隊列中實例按照先後順序彈出
  • poolDog方法:將隊列中的dog類按照先後順序彈出
  • poolCat方法:將隊列中cat類按照先後順序彈出
  • isEmpty方法:檢查隊列中是否還有cat或dog的實例
  • isDogEmpty方法:檢查隊列中是否有dog實例
  • isCatEmpty方法:檢查隊列中是否有cat實例

思路分析

看了要求,使用隊列結構是毋庸置疑的,那麼隊列結構該如何放數據呢?

整體的一個隊列?那單獨彈出貓或狗時,借用一個輔助隊列,將數據依次彈出,然後拿到彈出的第一個貓或狗,將其返回。

貓和狗分開,兩個隊列?單獨彈出時很簡單,要想整體彈出該如何是好呢?是從貓隊列拿還是從狗隊列拿呢?可以另外創建一個結構,標註每個元素進入隊列的先後順序,在出隊列時比較以下就可以了。

那麼上面兩個設計方法要選擇哪個呢?整體一個隊列十分耗時,兩個隊列耗費了空間。我優先選擇了兩個隊列的設計方法。

好,設計方法有了,如何封裝寵物進隊列的先後順序呢?使用一個整型,從0開始,依次遞增就好了(哪個小哪個就是更先進入隊列的),將其封裝為一個類,如下:

算法設計系列-06

之後在實現的類中,隊列使用此類即可,簡單的Java代碼實現如下:

算法設計系列-06


分享到:


相關文章: