棧的順序表示


用順序存儲方式來存儲的,就是順序棧。

存儲方式:同一般線性表的順序存儲結構完全相同

李用一組地址連續的存儲單元依次存放自棧底到棧頂的數據元素。棧底一般在低地址端口。

附設 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):棧已經空,還要彈出元素

注:上溢是一種錯誤,使問題的處理無法進行;而下溢一般認為是一種結束條件,即問題處理結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM