隊列和棧(1)

棧和隊列的基本性質
棧:先進後出
隊列:先進先出

兩者在實現結構上可以有數組和鏈表兩種形式。
1.數組結構實現較容易
2.用鏈表結構較複雜,因爲涉及許多指針操作。

棧結構的基本操作
1.pop操作,彈出棧頂
2.top或peek操作,訪問棧頂
3.puch棧頂壓入
4.size操作

隊列的基本操作
與棧操作的不同:
push是在隊頭加入元素,pop是在隊尾彈出一個元素。

棧和隊列的基本操作,都是時間複雜度爲O(1)的操作。

特殊:
1.雙端隊列結構都可以壓入和彈出元素。
2.優先級隊列爲根據元素的優先級值,決定元素的彈出順序。
優先級隊列爲堆結構,並不是線性結構。

棧和隊列需掌握遍歷方式:
深度優先遍歷(DFS)和寬度優先遍歷(BFS)
深度優先遍歷用棧可以實現
1
2 3
4 5 6 7
元素入棧的順序,就是深度優先遍歷的順序:1 2 4 5 3 6 7

寬度優先遍歷用隊列可以實現
1
2 3
4 5 6 7
1進隊列,1出
23進隊列
2出隊列45進隊列
3出隊列67進隊列
4567出隊列
進隊列的順序,就是寬度優先遍歷的順序:1 2 3 4 5 6 7

平時用的遞歸函數實際上用到了提供的函數系統棧。
遞歸過程可以看做遞歸函數依次進入函數棧的過程。
所以用遞歸可以實現的過程,一定可以用非遞歸的方式實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章