棧的壓入彈出序列

2021-06-28 11:10:39 字數 765 閱讀 1863

1.問題描述

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

2.分析

我們可以用乙個輔助棧來協助我們判斷,當輔助棧的棧頂元素是要彈出序列中的元素時,我們就對輔助棧進行彈出操作,否則 我們就對輔助棧進行壓入。迴圈的結束條件是:

如果彈出序列已經遍歷到最後了,或者壓入序列已經遍歷到最後(無元素可壓入棧內),然後我們判斷棧內是不是空並且彈出序列是否完全彈出,來判斷彈出序列是不是為該壓入序列的彈出序列。

3.**

int ispoporder(int* pushorder,int* poporder, int length,stack* s)

int* pnextpush = pushorder;

int* pnextpop = poporder;

while (pnextpop - poporder < length)

push(s,n);

pnextpush ++;

}else

}if (gettop(s) == null && pnextpop - poporder == length)

return ispoporder;

}

棧的壓入彈出序列

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