1. 程式人生 > >算法:(四)棧和隊列

算法:(四)棧和隊列

很多 棧和隊列 雙端 指針 size 實現 font 操作 鏈表

(一)棧和隊列的基本性質

  • 棧是先進後出
  • 隊列是先進先出
  • 棧和隊列在實現結構上可以有數組和鏈表兩種形式
    • 數組結構實現較容易
    • 用鏈表結構較復雜,因為牽扯很多指針操作

(二)隊列和棧的基本操作

  • pop操作(棧尾彈出一個元素)
  • push操作(棧/隊列尾加入一個元素)
  • shift操作(隊頭彈出一個元素)
  • 棧和隊列的基本操作,都是時間復雜度都為O(1)的操作

(三)深度優先遍歷(DFS)和寬度優先遍歷(BFS)

  • 深度優先遍歷可以用棧實現
  • 寬度優先遍歷可以用隊列實現

(四)雙端隊列和優先級隊列

  • 雙端隊列首尾都可以壓入和彈出元素
  • 優先級隊列可根據元素的優先級值,決定元素的彈出元素
  • 優先級隊列的結構為堆結構,並不是線性結構

算法:(四)棧和隊列