劍指Offer 題22 棧的壓入 彈出序列

2021-06-25 08:55:08 字數 967 閱讀 6663

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

輸入:每個測試案例包括3行:

第一行為1個整數n(1<=n<=100000),表示序列的長度。

第二行包含n個整數,表示棧的壓入順序。

第三行包含n個整數,表示棧的彈出順序。

輸出:對應每個測試案例,如果第二個序列是第乙個序列的彈出序列輸出yes,否則輸出no。

樣例輸入:

5

1 2 3 4 5

4 5 3 2 1

51 2 3 4 5

4 3 5 1 2

樣例輸出:yes

no

#include #include typedef struct sd sdata;

typedef struct sstack;

stack stack;

sdata *pusharray;

int *poparray;

void initstack(int n)

void pop(stack* stack)

void push(stack *stack,int x)

int rtop(stack s)

int isempty(stack s)

void judge(sdata *pusharray,int *poparray,int n) {

int i,j;

if(n<=0)return;

for(i=0;i

劍指offer 22 棧的壓入 彈出序列

題目 輸入兩個整型陣列,判斷第二個是不是第乙個的棧輸出序列 解法 使用佇列完成,輸出傳入棧中再輸出 public class main new int private static boolean isseq int input,int output stacks new stack 建立棧,模擬實...

劍指offer 22 棧的壓入彈出序列

輸入兩個整數序列,第乙個表示壓棧順序,判斷第二個序列是否為該棧的彈出序列?分析 include include include using namespace std class solution 棧頂不等於彈出序列頂,則跳出 if s.top pnextpop break 彈棧,第乙個序列匹配 s...

劍指offer22 棧的壓入 彈出序列

思路 建立棧,並且兩個指標指向陣列,直到pop陣列結束,或者stack空了 static boolean check int push,int pop stack.push push pushindex while stack.isempty popindex 如果pop已經結束了 if popin...