棧和隊列都是線性結構,是特殊的線性表。
棧:
僅在表尾進行插入或刪除元素的操作。表尾稱爲棧頂,表頭稱爲棧底。不含元素的空表爲空棧。又稱爲”先進後出“線性表。
棧有兩種存儲結構:順序存儲和鏈式存儲(與線性表類似)
設置top指針指向棧頂位置,base指針指向棧底位置,當top = base 時,棧爲空棧。使用C語言時,不應限定棧的最大容量:先分配一個基本容量,當空間不夠使用時,使用realloc命令進行空間擴充。
使用時,結合實際問題,利用”先進後出“的性質。
隊列
僅在表的一段插入數據元素(隊尾),在標的另一端刪除數據元素(隊頭)。“先進先出”的線性表。
還有“雙端隊列”的特殊形式:限定插入和刪除操作在表的兩端進行的線性表。實際應用中有:輸入受限的雙端隊列(一個端點允許插入和刪除、另一個端點只允許刪除);輸出受限的雙端列表(一個端點允許插入和刪除、另一個端點只允許插入)。
鏈隊列:用鏈表表示的隊列。需要兩個分別指向隊頭和隊尾的指針。可以增設一個頭結點,頭結點指向隊頭。
循環隊列:用順序存儲結構實現的隊列。將連續的存儲空間想象成首尾相連的圓環,同樣有兩個分別指向隊頭和隊尾的指針。當頭指針與尾指針指向同一個存儲位置時,隊列爲空隊列。