元素出棧 入棧順序的合法性

2021-07-11 04:24:16 字數 966 閱讀 5203

元素出棧、入棧順序的合法性。如入棧的序列(1,2,3,4,5),出棧序列為(4,5,3,2,1)

很直觀的一種想法,建立乙個輔助棧,把輸入的第乙個序列中的數字一次壓入該輔助棧,並按照第二個序列的順序從該棧中彈出數字。

遍歷出棧順序中的元素,有兩種情況  :

(1)如果元素是棧頂的元素,則pop出來;

(2)如果不是棧頂元素,則根據入棧順序將沒入棧的元素push進棧,直到將該元素push棧中,然後將該元素pop出來;

如果push完所有元素都沒有找到該元素,那麼這個出棧順序是錯誤的。最後輔助棧為空棧,並且遍歷完了出棧序列的最後乙個元素(二者缺一不可),那麼該序列就是 乙個彈出序列

bool g_invalidinput = false;

bool ispoporder(const int datapush, const int datapop, int length1,int length2)

int length = length1;

const int* cur = datapop;

stackstackdata;

for (int i = 0; i < length; ++i) }

if (stackdata.empty()&&stackdata.size() == 0)

return true;

return false;

}

bool ispoporder(vectorpushv, vectorpopv)

{ if (pushv.size() != popv.size() || pushv.size() <= 0)

return false;

int len = pushv.size();

int indexpopv = 0;

stackstackdata;

for (int i = 0; i < len&&indexpopv

元素出棧 入棧順序的合法性。

1.基礎題 元素出棧 入棧順序的合法性。如 入棧的序列 1,2,3,4,5 出棧序列為 4,5,3,2,1 則合法。入棧的序列 1,2,3,4,5 出棧序列為 4,5,2,3,1 則不合法。include include include using namespace std input為入棧序列,...

元素出棧 入棧順序的合法性

問題描述 判斷元素出棧 入棧順序的合法性。如入棧的序列 abcde 出棧序列為 deabc 思路 定義兩個陣列分別來存放入棧和出棧序列 步驟1 先將字串1的第乙個字元入棧 步驟2 將該元素與字串2的第乙個元素進行比較 步驟3 a 如果相等,就將該元素出棧並且將字串1的下乙個字元入棧,與字串2的下乙個...

判斷元素出棧入棧順序的合法性

思路 假設入棧序列,出棧序列 首先我們將入棧序列的第乙個元素入棧,這是設定乙個指標只想出棧序列的第乙個元素,如果出入棧以後,棧頂 元素和出棧指標所指向的元素相等,那麼就讓棧頂元素出棧,讓指標 最後判斷棧為空就好,若為空,就說明是合法的,如果不是就是不合法。如下 include include inc...