c 實現 棧的壓入 彈出序列

2021-10-07 10:22:13 字數 587 閱讀 1007

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

思路:因為彈出之前的值都會先入棧,所以借助輔助棧來實現。

1.用指標i指向pushv的第乙個位置, 指標j指向popv的第乙個位置。

2.如果pushv[i] != popv[j], 那麼應該將pushv[i]放入輔助棧中,++i。

3.否則,pushv[i]popv[j], 說明這個元素是放入棧中立馬彈出,所以,++i, ++j,然後應該檢查popv[j]與棧頂元素是否相等,如果相等,++j, 並且彈出棧頂元素。

4.如果ipushv.size(), 說明入棧序列訪問完,此時檢查棧是否為空,如果為空,說明匹配,否則不匹配。

**實現:

class

solution

else}}

return tt.

empty()

;}};

C 棧的壓入 彈出序列

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

棧的壓入 彈出序列 c

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

棧的壓入彈出序列

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