野生前端的資料結構基礎練習(2)——隊列

來源:互聯網
上載者:User

標籤:https   發布訂閱   可見   參考   href   數字   ofo   大小   分享   

網上的相關教程非常多,基礎知識自行搜尋即可。

習題主要選自Orelly出版的《資料結構與演算法javascript描述》一書。

參考代碼可見:https://github.com/dashnowords/blogs/tree/master/Structure/Queue

隊列的基本知識
  • 特點:

    先進先出。

  • 用途:

    類比流程或其他帶有抽象排隊屬性的事物或邏輯,例如時間迴圈隊列,發布訂閱模式的回調隊列等等。

  • 基本方法

    • enqueue()在隊尾插入一個元素
    • dequeue()從隊頭刪除一個元素
    • getHeader()擷取隊頭的元素
    • getTail()擷取隊尾的元素
    • getLength()擷取隊列的長度
    • isEmpty()判斷隊列是否為空白隊列
  • 需要留意的問題

    使用javascript語言來理解資料結構只能夠協助我們理解結構的基本特性,由於不涉及底層的原理,所以無法深入到演算法細節的時間複雜度的話題上,對此感興趣的同學建議在學習完資料結構入門後再去學習C語言描述版的資料結構資料。

基本練習
  1. 根據棧的特性實現一個Queue類,並在後續題目中需要用隊列時使用它。
  2. 編寫一個函數dancingQueue(str),str中記錄著前來參加舞會的人的性別,以空格分割,函數中需要實現將前來跳舞的人按性別分成兩隊,每當舞池中有空位時,男隊和女隊的排在最前面的人組成舞伴進入,如果某一隊為空白時,需要返回對應的訊息。
  3. 實現一個PriorityQueue類,實現優先隊列的功能,優先隊列的元素帶有權重,權重越高(一般認為數字越小權重越高)的越早出隊。
課後習題(書中第五節習題)
  1. 修改Queue類,產生一個Deque類,允許從隊列兩端添加和刪除元素,因此也叫雙向隊列。
  2. 使用Deque類判斷一個單詞是否是迴文。
  3. 題目3和題目4比較簡單,不再贅述。
習題思路
  1. javascript中的數組就符合雙向隊列的特性,試著自己去實現幾個特徵方法即可。

  2. Deque類可以從隊列兩端出隊,每次從兩端各出隊一個元素進行比較即可。
擴充- 迴圈隊列

迴圈隊列書中並沒有提及,它是一種特殊的隊列。簡單理解就是將基本隊列只當做儲存結構,而使用frontrear兩個指標分別代表隊列的頭和尾,實際對外表現的隊列是frontrear所指向的元素構成的。為了複用儲存空間,迴圈隊列在儲存結構的實現上是首位相連的。

  • 基本要素
    • front指標指向隊頭
    • rear指標指向隊尾
    • size隊列的長度
    • length儲存空間的大小
  • 基本方法
    • enqueue()元素入隊
    • dequeue()元素出隊
    • isEmpty()判斷隊空
    • isFull()判斷隊滿
    • getSize()擷取隊列長度
    • getLength()擷取儲存空間長度
    • clear()清空隊列
基本練習

實現一個CircularQueue類,並添加一個擴充方法resize(),當儲存空間已滿且有元素入隊時,自動將儲存空間擴充一倍,當元素出隊造成隊列長度不足儲存空間的1/4時,將儲存空間減半以釋放空間。

野生前端的資料結構基礎練習(2)——隊列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.