Stack 跟 Queue 的差別是什麼?


Posted by GL on 2022-03-06


圖片來源

什麼是堆疊(Stack)?

堆疊(stack)是一種資料結構,遵循著資料 後進先出(Last In First Out,LIFO) ,最後一個進去,最先出來的原則。較新的元素會靠近頂部(堆疊尾部),較舊的元素會在堆疊的底部。

生活中常見的例子有自助餐吃到飽的盤子、書桌旁號稱有空會看但有空時永遠都不會看的那堆書、總是被媽媽塞得滿滿,深不見底的冷凍庫

圖片來源

Stack 最常見的兩種操作方式,分別是 pushpop,push 就是把東西放到最上面,pop 則是把東西從上面拿走。

什麼是佇列(Queue)?

佇列 (queue)也是一種資料結構,遵循著資料 先進先出(First In First Out,FIFO) ,第一個進去,第一個出來的原則。較新的元素會靠近頂部(佇列尾部),較舊的元素會在佇列的底部。

生活中常見的例子有排隊上公車,先到的人先上車,後面到的人就依序往後排、排在高速公路出口閘道的車流、貓咪自動餵食器裡的飼料

圖片來源

queue 最常見的兩種操作方式,分別是 enqueuedequeue,前一個是丟資料到 queue 內,後一個是從 queue 內將資料取出。。

Stack 跟 Queue 的差別是什麼?

Stack Queue
資料處理順序 先進後出 (LIFO) 先進先出 (FIFO)
新增 / 刪除 的端點 只有一個端點(top),新增和刪除在同一端點,依序向上堆疊,刪除則相反, 會從最上面先刪除 兩個端點(front /rear),新增會從佇列尾端放入,刪除則從最前端的舊資料先刪
常見應用 遞迴 (recursion) 形式的演算法/編輯器 (如 word、sublime 等) 中的 undo 安排多個程式的執行順序

參考來源:


#stack #Queue







Related Posts

另一個與 styled-components 相關的 debug 紀錄

另一個與 styled-components 相關的 debug 紀錄

 [10] 型別 - 內建型別、基本型別值

[10] 型別 - 內建型別、基本型別值

讀書心得 - 讀懂一本書

讀書心得 - 讀懂一本書


Comments