1. 程式人生 > >(資料結構)第四章 棧與佇列

(資料結構)第四章 棧與佇列

4.1 棧

許多程式語言本身就是建立在棧結構之上的,其實時運算環境都是基於棧結構的虛擬機器。

相對於向量和列表,棧與佇列的外部介面更為簡化和緊湊。

棧的應用主要為:

結合函式呼叫棧的機制介紹一般函式呼叫的實現方式與過程,並將其推廣至遞迴呼叫。然後以降低空間複雜度的目標為線索,介紹通過顯示地維護棧結構解決應用問題的典型方法和基本技巧。

4.1.1 ADT介面

棧中可操作的一端更多地稱作棧頂,而另一無法直接操作的盲端則更多地稱作棧底。

原則:後進先出

棧介面的時間複雜度均為常數。

4.2 棧與遞迴

遞迴演算法所需的空間量,主要決定於最大遞迴深度。

4.2.1 函式呼叫棧

1、如何實現函式(遞迴)呼叫?

2、如何記錄呼叫與被呼叫函式例項之間的關係?

3、如何實現函式呼叫的返回?

4、如何維護同時活躍的所有函式?

 

4.3.2 遞迴巢狀

棧混洗:由n次push和n次pop構成的任何操作序列,只要滿足“任一字首中的push不少於pop”這一限制,則該序列也必然對應於某個棧混洗。