c 棧的彈出

2022-06-19 03:21:10 字數 908 閱讀 4599

假設現在有乙個棧,長度num=5,len表示棧中已有的元素,arraylen表示棧的總容量。

假設有方法pop用來彈出棧中的元素,有方法push用來壓入元素。

分別給出建構函式和pop方法。

mystack::mystack(int

num)

intmystack::pop()

void mystack::push(int

num)

a[len++] =num;

}

由pop方法中可以看到,所執行的操作為:先將len-1,然後返回元素a[len];

那麼問題來了

假設len=5,將第五個元素返回後,len=4.。

此時第五個元素是被刪除了還是僅僅還是無法訪問到這個元素?

在函式中新增**來手動訪問第五個位置的元素,**如下

int mystack::test(int

num)

在main函式中新增**

int

main()

即,新建乙個棧,並往棧中新增五個元素,並彈出第五個元素,此時cout的內容為

由此可以發現,pop並不會刪除這個元素,而是讓這個元素不能再被直接訪問,這個元素依然存在於陣列中。

但是這並不會影響棧的壓入和彈出操作,因為當進行壓入操作時(假如在彈出第五個元素之後再壓入乙個數x),之前這個位置的元素會被新壓入的元素替換掉。

雖然看起來沒有什麼問題,但是為了保險起見,仍然應當在彈出這個元素之後,將這個位址的值設定為null,**如下

int

mystack::pop()

然後輸出結果就變為

C 棧的壓入 彈出序列

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出序列。假設壓入棧的所有數字均不相等。例如 序列是某棧的壓棧序列,序列是該壓棧序列對應的乙個彈出序列,但就不可能是該壓棧序列的彈出序列。解決該問題需要借助乙個輔助棧,把輸入的第乙個序列中的數字依次入棧,並按照第二個序列的順序...

棧的壓入 彈出序列 c

棧的壓入 彈出序列 題目描述 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注...

棧的壓入 彈出順序 C 版本

題目描述 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度...