20 棧的壓入 彈出序列

2022-07-29 02:57:15 字數 809 閱讀 6326

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

思路:這裡使用畫圖的方法輔助分析,使用兩個for迴圈,第乙個for迴圈處理乙個pushv的壓入棧操作,第二個迴圈操作popv,只要和棧的top元素相等,就彈出棧,對棧的操作進行top前需要判斷stack是否為空,最後判斷棧是否為空得到是否符合要求。

/*c++

模擬堆疊操作:將原數列依次壓棧,棧頂元素與所給出棧佇列相比,如果相同則出棧,

如果不同則繼續壓棧,直到原數列中所有數字壓棧完畢。

檢測棧中是否為空,若空,說明出棧佇列可由原數列進行棧操作得到。否則,說明出棧佇列不能由原數列進行棧操作得到。

*/

class

solution

int pushsize =pushv.size();

int popsize =popv.size();

int i = 0,j = 0

; stack

s;for(i;i < pushsize;++i)

}}

return s.empty();//

stack為空就是彈出序列,不為空就不是彈出序列

}};

棧的壓入彈出序列

題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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就不可能是該壓棧序列的彈出序列。bool ispoporder cons...

棧的壓入彈出序列

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