C 棧的壓入 彈出序列

2021-09-25 12:53:22 字數 1264 閱讀 1958

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出序列。

假設壓入棧的所有數字均不相等。

例如:序列是某棧的壓棧序列,序列是該壓棧序列對應的乙個彈出序列,但就不可能是該壓棧序列的彈出序列。

解決該問題需要借助乙個輔助棧,把輸入的第乙個序列中的數字依次入棧,並按照第二個序列的順序依次從該棧中彈出數字。

判斷乙個序列是不是棧的彈出序列規律:

#include 

#include

using namespace std;

bool ispoporder

(const int* ppush,

const int* ppop, int length)

else}if

(s.top()

!=*pnextpop)

break

; s.

pop();

pnextpop++;}

if(s.

empty()

&& pnextpush - ppush == length)

possible =

true

;return possible;

}

測試

int main()

; int b=

; int c=

; int size =

sizeof

(a)/

sizeof

(a[0])

;if(ispoporder

(a, b, size)

) cout <<

"yes"

<< endl;

else

cout <<

"no"

<< endl;if(

ispoporder

(a, c, size)

) cout <<

"yes"

<< endl;

else

cout <<

"no"

<< endl;

system

("pause");

return0;

}

輸出結果

yes

no

棧的壓入 彈出序列 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就不可能是該壓棧序列的彈出序列。解答 可以用乙個輔助的棧來儲存入...

棧的壓入 彈出序列

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