您好,登錄后才能下訂單哦!
網上的相關教程非常多,基礎知識自行搜索即可。
習題主要選自Orelly出版的《數據結構與算法javascript描述》一書。
參考代碼可見:https://github.com/dashnowords/blogs/tree/master/Structure/Queue
特點:
先進先出。
用途:
模擬流程或其他帶有抽象排隊屬性的事物或邏輯,例如時間循環隊列,發布訂閱模式的回調隊列等等。
基本方法
enqueue()
在隊尾插入一個元素dequeue()
從隊頭刪除一個元素getHeader()
獲取隊頭的元素getTail()
獲取隊尾的元素getLength()
獲取隊列的長度isEmpty()
判斷隊列是否為空隊列需要留意的問題
使用javascript
語言來理解數據結構只能夠幫助我們理解結構的基本特性,由于不涉及底層的原理,所以無法深入到算法細節的時間復雜度的話題上,對此感興趣的同學建議在學習完數據結構入門后再去學習C語言描述版的數據結構資料。
Queue
類,并在后續題目中需要用隊列時使用它。dancingQueue(str)
,str
中記錄著前來參加舞會的人的性別,以空格分割,函數中需要實現將前來跳舞的人按性別分成兩隊,每當舞池中有空位時,男隊和女隊的排在最前面的人組成舞伴進入,如果某一隊為空時,需要返回對應的消息。PriorityQueue
類,實現優先隊列的功能,優先隊列的元素帶有權重,權重越高(一般認為數字越小權重越高)的越早出隊。Queue
類,生成一個Deque
類,允許從隊列兩端添加和刪除元素,因此也叫雙向隊列。Deque
類判斷一個單詞是否是回文。javascript中的數組就符合雙向隊列的特性,試著自己去實現幾個特征方法即可。
Deque
類可以從隊列兩端出隊,每次從兩端各出隊一個元素進行比較即可。循環隊列
書中并沒有提及,它是一種特殊的隊列。簡單理解就是將基本隊列只當做存儲結構,而使用front
和rear
兩個指針分別代表隊列的頭和尾,實際對外表現的隊列是front
和rear
所指向的元素構成的。為了復用存儲空間,循環隊列
在存儲結構的實現上是首位相連的。
front指針
指向隊頭rear指針
指向隊尾size
隊列的長度length
存儲空間的大小enqueue()
元素入隊dequeue()
元素出隊isEmpty()
判斷隊空isFull()
判斷隊滿getSize()
獲取隊列長度getLength()
獲取存儲空間長度clear()
清空隊列實現一個CircularQueue
類,并添加一個擴展方法resize()
,當存儲空間已滿且有元素入隊時,自動將存儲空間擴充一倍,當元素出隊造成隊列長度不足存儲空間的1/4時,將存儲空間減半以釋放空間。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。