什麼是堆疊(Stack)?
堆疊(stack)是一種資料結構,遵循著資料 後進先出(Last In First Out,LIFO) ,最後一個進去,最先出來的原則。較新的元素會靠近頂部(堆疊尾部),較舊的元素會在堆疊的底部。
生活中常見的例子有自助餐吃到飽的盤子、書桌旁號稱有空會看但有空時永遠都不會看的那堆書、總是被媽媽塞得滿滿,深不見底的冷凍庫
圖片來源
Stack 最常見的兩種操作方式,分別是 push
與 pop
,push 就是把東西放到最上面,pop 則是把東西從上面拿走。
什麼是佇列(Queue)?
佇列 (queue)也是一種資料結構,遵循著資料 先進先出(First In First Out,FIFO) ,第一個進去,第一個出來的原則。較新的元素會靠近頂部(佇列尾部),較舊的元素會在佇列的底部。
生活中常見的例子有排隊上公車,先到的人先上車,後面到的人就依序往後排、排在高速公路出口閘道的車流、貓咪自動餵食器裡的飼料
圖片來源
queue 最常見的兩種操作方式,分別是 enqueue
與 dequeue
,前一個是丟資料到 queue 內,後一個是從 queue 內將資料取出。。
Stack 跟 Queue 的差別是什麼?
Stack | Queue | |
---|---|---|
資料處理順序 | 先進後出 (LIFO) | 先進先出 (FIFO) |
新增 / 刪除 的端點 | 只有一個端點(top),新增和刪除在同一端點,依序向上堆疊,刪除則相反, 會從最上面先刪除 | 兩個端點(front /rear),新增會從佇列尾端放入,刪除則從最前端的舊資料先刪 |
常見應用 | 遞迴 (recursion) 形式的演算法/編輯器 (如 word、sublime 等) 中的 undo | 安排多個程式的執行順序 |
參考來源:
- 用 JavaScript 學習資料結構和演算法:堆疊(Stack)篇@ KD Chang
- 資料結構 --- 陣列 (Array)、堆疊 (Stack)、佇列 (Queue)
- Stack & Queue
- Ch18 Stack 與 Queue
- Difference between Stack and Queue Data Structures
- 4.3 Stacks and Queues
- Stack and Queue in JavaScript
- 第6章 堆疊與佇列
- 堆疊 (Stack) & 佇列 (Queue)
- 【資料結構】堆疊(Stack)與佇列(Queue)
- 基本的資料結構
- Stack: Intro (簡介)@Chiu CC
- Queue: Intro (簡介),並以 Linked list 實作@Chiu CC
- JavaScript: What are Stack and Queue?