隊(duì)列(Queue)是一種線性數(shù)據(jù)結(jié)構(gòu)向胡,其行為類似于現(xiàn)實(shí)世界的隊(duì)列恼蓬。它遵循先進(jìn)先出(FIFO)的操作順序,類似于現(xiàn)實(shí)世界的對應(yīng)物僵芹。這意味著將新項(xiàng)目添加到隊(duì)列的末尾处硬,而從隊(duì)列的開頭刪除項(xiàng)目。
隊(duì)列數(shù)據(jù)結(jié)構(gòu)的主要操作有:
-
enqueue
:將元素添加到隊(duì)列末尾 -
dequeue
:從隊(duì)列的開頭移除元素 -
peek
:檢索隊(duì)列開頭的元素拇派,而不刪除它 -
isEmpty
:檢查隊(duì)列是否為空
JavaScript 實(shí)現(xiàn)
class Queue {
constructor() {
this.items = []
}
enqueue(item) {
this.items.push(item)
}
dequeue(item) {
return this.items.shift()
}
peek(item) {
return this.items[0]
}
isEmpty() {
return this.items.length === 0
}
}
- 使用
constructor
創(chuàng)建一個(gè)類(class
)荷辕,為每個(gè)實(shí)例初始化空數(shù)組items
。 - 定義一個(gè)
enqueue()
方法件豌,使用Array.prototype.push()
將元素添加到items
數(shù)組的末尾疮方。 - 定義一個(gè)
dequeue()
方法,使用Array.prototype.shift()
從items
數(shù)組的開頭刪除元素茧彤。 - 定義一個(gè)
peek()
方法骡显,檢索items
數(shù)組中第一個(gè)元素的值,而不刪除它。 - 定義一個(gè)
isEmpty()
方法惫谤,使用Array.prototype.length
判斷items
數(shù)組是否為空壁顶。
const queue = new Queue()
queue.isEmpty() // true
queue.enqueue('A')
queue.enqueue('B')
queue.enqueue('C')
queue.enqueue('D')
queue.enqueue('E')
queue.isEmpty() // false
queue.peek() // 'A'
queue.dequeue() // 'A'
queue.dequeue() // 'B'
queue.dequeue() // 'C'
以上內(nèi)容來自 30 seconds of code 的 JavaScript Data Structures - Queue