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

【棧】設棧的順序儲存空間為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,這個棧就滿了。

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

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