22 棧的壓入 彈出序列

2021-07-04 11:28:39 字數 595 閱讀 8186

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

如果下乙個彈出的數字剛好是棧頂數字,那麼直接彈出。如果下乙個彈出的數字不在棧頂,需要把壓棧序列中還沒有入棧的數字壓入輔助棧,直到把下乙個需要彈出的數字壓入棧頂為止。如果所有數字都壓入棧了,仍然沒有找到下乙個彈出的數字,那麼該序列不可能是乙個彈出序列。

bool ispoporder(const

int* ppush, const

int* ppop, int nlength)

if (stackdata.top() != *pnextpop)

break;

stackdata.pop();

pnextpop++;

}if (stackdata.empty() && pnextpop - ppop == nlength)

result = true;

return result;

}

棧的壓入 彈出序列 22

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

Q22 棧的壓入 彈出序列

q 給定乙個入棧序列in和出棧序列out,判斷out是否是in的乙個可行 合法 的出棧序列。若當前棧頂的元素與當前out的元素不同,且還有未入棧的in元素,那麼繼續入棧新元素,否則 就表明,所有的入棧in元素都入棧了,該出棧的元素就是沒在棧頂出現,說明被 埋沒 了,是個錯誤的出棧順序。bool is...

棧的壓入彈出序列

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