棧的壓入彈出序列的合法性

2021-07-15 11:08:42 字數 963 閱讀 2324

/********************************************

描述: 輸入兩個整數序列,第乙個整數序列表示棧的壓

入順序,請判斷第二個序列是否為棧的彈出序列

方法: 定義乙個棧,剛開始時將第乙個元素壓入棧中,

然後判斷棧頂的元素和第二個序列的元素是否

相同,如果相同則pop掉棧頂的這個元素,否則

繼續壓入第乙個序列到棧中,以此進行匹配,

得出結果。

*********************************************/

#define _crt_secure_no_warnings

#include

using

namespace

std;

#include

bool ispoporder(const

int* push, const

int* pop, int len)

const

int* nextpush = push;

const

int* nextpop = pop;

stack

s;while (nextpop-popwhile (s.empty() || s.top() != *nextpop)

s.push(*nextpush);

++nextpush;

}if (s.top() != *nextpop)

s.pop();

++nextpop;

}if (s.empty() && nextpop - pop == len)

return ret;

}void test()

; int arr2[5] = ;

cout

<5);

}int main()

棧的壓入彈出序列

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