1樓:匿名使用者
因為先進行堆疊操作的時候要top++。這個你懂得把。所以第一次操作的時候,直接top++就能對0號空間操作,這是堆疊操作的指令順序,用匯編來描述就是sp<-sp+1,(sp)<-register,看得懂就看,看不懂也沒事所以當top=-1時,必定是空棧。
而反過來,假如堆疊只有一個空間在使用(即top=0),現在把它彈出了,就要執行top--,因此,top=-1必定是空棧,還有不懂可以問。。
2樓:匿名使用者
你說的這個情況應該是以陣列構成順序棧的情況下的一個陣列以陣列底為棧底,而棧頂時鐘標誌是始終操作棧頂元素的。也就是說,你要壓棧,必須先把棧頂標誌加一之後才能寫入,你要彈棧需要先讀出再把棧頂標誌減一。
那麼,棧為空的時候標誌肯定不能是0,因為它標誌著棧頂元素是陣列的第一個值,這樣代表棧裡是有一個元素的。所以,top是-1的時候它才是空棧,寫入的時候要先加一,指向陣列第一個空間了才能寫
這樣一想你就應該知道為什麼top是-1時候代表棧空了
c的資料結構問題(棧),資料結構有關棧的問題
亮 靜 define stack init size 100 c語言中定義乙個常量。stack init size 100 define stackincrement 10 c語言中定義乙個常量。stackincrement 10 include include 包含兩個標頭檔案。stdio.h和s...
資料結構題 設棧S的初始狀態為空,若元素a b c d e f依次進棧,得到的出棧序列是b d c f e a
答的挺對的,棧s的容量是3,既然知道了棧名s,要用到c c 最好能用棧s的函式push pop s.push a s.push b s.pop s.push c s.push d s.pop s.pop s.push e s.psuh f s.pop s.pop s.pop b是第乙個出棧,那怎樣才...
關於資料結構進棧和出棧的問題望賜教(就剩20分了,您別嫌少)
和 這種操作符!放在變數的前面為 如i 1 等式 i 2 4 是先計算這個值,再執行等式的!而 i 2 3 是先計算等式,之後再計算i的值,等式計算後i的值才是 2 進棧 s elem s top 程式內部會這樣分為兩步執行 s elem s top s top s top 1 出棧 s elem ...