用順序存儲方式來存儲的,就是順序棧。
存儲方式:同一般線性表的順序存儲結構完全相同
李用一組地址連續的存儲單元依次存放自棧底到棧頂的數據元素。棧底一般在低地址端口。
附設 top 指針,指示棧頂元素在順序棧中的位置。
另設 base 指針,指示棧底元素在順序棧中的位置。
但是!!!!!為了方便操作,通常 top 指示真正的棧頂元素之上的下標地址,也就是比 an 高一位的下標地址。
另外,用 stacksize 表示棧可用的最大容量。
第一個元素存放在下標為 0 的位置,最后一個元素存放在下標為 n-1 的位置
---------------------------------------------------------------------------------
這個棧里最多能放四個值,即最大容量為4,這個棧一開始沒有存放元素,也就是一個空棧。
top == base 是棧空標志
入棧:(元素A進棧)
這時 top 指針向后移動一格,移動到下標為1的位置。
接着 B,C,D依次進棧:
注意 top 指向位置,那么判斷棧滿時,可以如下:top - base == stacksize
不發生溢出的情況下,top - base ≤ stacksize
棧滿時的處理方法:
① 報錯,返回操作系統
② 分配更大的空間,作為棧的存儲空間,將原棧的內容移入新棧(一般不采用這種方式,耗費時間過多)
出棧:每出棧一個,top指針下移一格
-------------------------------------------------------------------------------------
使用數組作為順序棧的存儲方式的特點:簡單方便、但易產生溢出(數組大小固定)
上溢(overflow):棧已經滿,又要壓入元素
下溢(underflow):棧已經空,還要彈出元素
注:上溢是一種錯誤,使問題的處理無法進行;而下溢一般認為是一種結束條件,即問題處理結束。