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

演算法:(四)棧和佇列

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

  • 棧是先進後出
  • 佇列是先進先出
  • 棧和佇列在實現結構上可以有陣列和連結串列兩種形式
    • 陣列結構實現較容易
    • 用連結串列結構較複雜,因為牽扯很多指標操作

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

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

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

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

(四)雙端佇列和優先順序佇列

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