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為入棧序列,output為出棧序列,lenin為入棧元素個數;lenout為出棧元素個數
bool ispoporder(const
int* input, const
int* output,int lenin,int lenout)
stack
s;//入棧
int j=0;
for (int i=0;iwhile (j0&&s.top()==output[j])
}return s.size()==0? true:false;
}int main()
;//入棧序列
int output1=;//出現序列1
int output2=;//出棧序列2
int sz=sizeof(input)/sizeof(input[0]); //入棧的元素大小
int sz1=sizeof(output1)/sizeof(output1[0]);
int sz2=sizeof(output2)/sizeof(output2[0]);
cout
cout
}
元素出棧 入棧順序的合法性
元素出棧 入棧順序的合法性。如入棧的序列 1,2,3,4,5 出棧序列為 4,5,3,2,1 很直觀的一種想法,建立乙個輔助棧,把輸入的第乙個序列中的數字一次壓入該輔助棧,並按照第二個序列的順序從該棧中彈出數字。遍歷出棧順序中的元素,有兩種情況 1 如果元素是棧頂的元素,則pop出來 2 如果不是棧...
元素出棧 入棧順序的合法性
問題描述 判斷元素出棧 入棧順序的合法性。如入棧的序列 abcde 出棧序列為 deabc 思路 定義兩個陣列分別來存放入棧和出棧序列 步驟1 先將字串1的第乙個字元入棧 步驟2 將該元素與字串2的第乙個元素進行比較 步驟3 a 如果相等,就將該元素出棧並且將字串1的下乙個字元入棧,與字串2的下乙個...
判斷元素出棧入棧順序的合法性
思路 假設入棧序列,出棧序列 首先我們將入棧序列的第乙個元素入棧,這是設定乙個指標只想出棧序列的第乙個元素,如果出入棧以後,棧頂 元素和出棧指標所指向的元素相等,那麼就讓棧頂元素出棧,讓指標 最後判斷棧為空就好,若為空,就說明是合法的,如果不是就是不合法。如下 include include inc...