【棧】設棧的順序存儲空間為S(1,m),初始狀態為top=m+1,則棧中元素個數為m-top+1個。


設棧的順序存儲空間為S(1,m),初始狀態為top=m+1,則棧中元素個數為m-top+1個。

這道題容易被top=m+1給搞懵了,因為在咱們正常的思維中,這個棧應該是這樣的:

那么top=m+1不是直接滿棧溢出了嗎?

所以這個棧肯定不是這樣的,那還有種可能,就是這樣:

咱們把m帶入一個數,比如說4,那么棧底指針現在就在4號房,棧頂指針在5號房,如果一個人要入住,那么棧頂指針+1,它也變成4號房了,那么 入住人員個數=m-top+1=4-4+1=1。

再往里入住一個人,top指針到了3號房,棧底指針還在4號房沒變,那么 入住人數=m-top+1=4-3+1=2.

這個棧頂指針可以一直減少,一直減少到1,這個棧就滿了。

有的人可能有疑惑,這個棧頂指針還能移到棧底更底的地方?其實這就是定義一個空棧的寫法,為啥棧頂=棧底不是一個空棧呢?

這就涉及到棧頂指針的定義了,棧頂指針一定是指向一個元素的,也就是說只要它出現在棧里,那么這個棧一定是有一個客戶在入住的,所以想表明空棧的時候,棧頂指針就指向棧底更底的一個位置了。


免責聲明!

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



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