佇列是遵循先進先出原則的一組有序的項,與棧的不同的是,棧不管是入棧還是出棧操作都是在棧頂操作,佇列則是在隊尾新增元素,隊頂移除,用乙個圖來表示大概是這樣事的:
用乙個更形象的例子就是:排隊服務,總是先排隊的人會先接受服務,當然不考慮插隊的情況
與棧的建立類似,首先建立乙個表示佇列的函式,然後定義乙個陣列用來儲存佇列裡的元素:
function queue()
建立佇列後需要為其定義一些方法,一般來說佇列包含以下方法:
具體實現:
function queue()
// 遵循先進先出原則,從佇列的頭部移除元素
this.dequeue = function ()
// 返回佇列最前面的項
this.front = function ()
// 返回佇列是否為空
this.isempty = function ()
// 返回佇列的長度
this.size = function ()
// 列印佇列,方便觀察
this.print = function ()
}
接下來讓我們看看佇列的使用:
let queue = new queue()
queue.enqueue('a')
queue.enqueue('b')
queue.enqueue('c')
queue.dequeue()
queue.print()
首先向佇列中新增三個元素:a,b,c,然後移除佇列中的乙個元素,最後列印現有佇列,讓我們一起**這個過程:
和實現stack類一樣,也可以用es6的class語法實現queue類,用weakmap儲存私用屬性items,並用閉包返回queue類,來看具體實現:
let queue = (function ()
enqueue (element)
dequeue ()
front ()
isempty ()
size ()
print ()
} return queue
})()
let queue = new queue()
queue.enqueue('a')
queue.enqueue('b')
queue.enqueue('c')
queue.dequeue()
queue.print()
優先佇列顧名思義就是:佇列中的每個元素都會有各自的優先順序,在插入的時候會根據優先順序的高低順序進行插入操作,和前面佇列實現有點不太一樣的地方,佇列中的元素多了有先級的屬性,下面來看具體**:
function priorityqueue()
this.enqueue = function (element, priority)
}if (!added)
} this.dequeue = function ()
this.front = function ()
this.isempty = function ()
this.size = function ()
this.print = function () -$`)}}}
let priorityqueue = new priorityqueue()
priorityqueue.enqueue('a', 3)
priorityqueue.enqueue('b', 2)
priorityqueue.enqueue('c', 1)
priorityqueue.dequeue()
priorityqueue.print()
入隊時如果隊列為空直接加入佇列,否則進行比較,priority小的優先順序高,優先順序越高放在佇列的越前面,下面用乙個圖來看呼叫過程:
迴圈佇列顧名思義就是:給定乙個數,然後迭代佇列,從佇列開頭移除一項,然後再將其加到佇列末尾,當迴圈到給定數字時跳出迴圈,從隊首移除一項,直至剩餘乙個元素,下面來看具體**:
unction queue()
this.dequeue = function ()
this.front = function ()
this.isempty = function ()
this.size = function ()
this.print = function ()
}function loopqueue(list, num)
let out = queue.dequeue()
console.log('出佇列:' + out)
} return queue.dequeue()
}console.log('last:' + loopqueue(['a', 'b', 'c', 'd', 'e'], 3))
JS資料結構學習 佇列
佇列是遵循先進先出原則的一組有序的項,與棧的不同的是,棧不管是入棧還是出棧操作都是在棧頂操作,佇列則是在隊尾新增元素,隊頂移除,用乙個圖來表示大概是這樣事的 用乙個更形象的例子就是 排隊服務,總是先排隊的人會先接受服務,當然不考慮插隊的情況 與棧的建立類似,首先建立乙個表示佇列的函式,然後定義乙個陣...
JS資料結構學習 佇列
佇列是遵循先進先出原則的一組有序的項,與棧的不同的是,棧不管是入棧還是出棧操作都是在棧頂操作,佇列則是在隊尾新增元素,隊頂移除,用乙個圖來表示大概是這樣事的 用乙個更形象的例子就是 排隊服務,總是先排隊的人會先接受服務,當然不考慮插隊的情況 與棧的建立類似,首先建立乙個表示佇列的函式,然後定義乙個陣...
資料結構學習 佇列
定義 佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的 first in first out 的線性表,簡稱fifo。允許插入的一端為隊尾,允許刪除的一端為隊頭。佇列不允許在中間部位進行操作!假設佇列是q a1,a2,an 那麼a1就是隊頭元素,而a...