檢驗入棧序列 出棧序列是否合法

2021-08-04 04:27:07 字數 701 閱讀 2140

題目:元素出棧、入棧順序的合法性。如:入棧的序列(1,2,3,4,5),出棧序列為(4,5,3,2,1),則合法。入棧的序列(1,2,3,4,5),出棧序列為(4,5,2,3,1),則不合法。 

思路:借用乙個輔助棧,先按照入棧順序push,直到棧頂元素和出棧序列相等就pop,以此類推,最後棧為空且兩個序列都被遍歷到。

**:bool

ispoporder

( vector

<

int>

pushv ,

vector

<

int>

popv

) /*到這裡如果棧頂仍然不等於下乙個要出棧的,說明序列不合法*/

if ( s

. top

() !=

popv

[ idx_pop

]) break

; /*到這裡說明下乙個出棧的一定等於棧頂元素*/

s .pop

(); idx_pop

++;} /*棧為空 並且idx_pop(和idx_push相等)遍歷到了結尾說明合法*/

if ( s

. empty

() &&

idx_pop

==popv

. size

()) return

true

; return

false ;}

給定入棧序列判斷給定出棧序列是否合法

題目 輸入兩個整數序列。其中乙個序列表示棧的入棧順序,判斷另乙個序列有沒有可能是對應的出棧順序。思路 用乙個輔助棧,將入棧序列按照某種順序入棧,看是否可以產生出棧序列即可。1 如果當前棧為空,且入棧序列不空,則入棧序列的下乙個元素入棧 2 如果當前輔助棧的棧頂元素不等於出棧序列的首元素,那麼入棧序列...

判斷出棧序列是否合法

問題描述 對於乙個棧,已知元素的進棧序列,判斷乙個由棧中所有元素組成的排列是否是可能的出棧序列。比如,進棧序列為1 2 3 4,則可能的出棧序列有4 3 2 1,1 4 3 2等。而1 4 2 3就不是。輸入形式 從標準輸入讀取第一行是乙個整數n 3 n 10 代表有n個元素,其進棧序列是1 2 3...

判斷出棧序列是否合法

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