假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行(如沒有出現刪除時棧空)且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入格式:
輸入第一行給出兩個正整數n和m,其中n是待測序列的個數,m(≤50)是堆疊的最大容量。隨後n行,每行中給出乙個僅由s和x構成的序列。序列保證不為空,且長度不超過100。
輸出格式: 對每個序列,在一行中輸出yes如果該序列是合法的堆疊操作序列,或no如果不是。
輸入樣例: 4 10 sssxxsxxsx sssxxsxxs ssssssssssxss*********xx sssxxs***
輸出樣例: yes no no no
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
typedef struct
sqstack;
int initstack(sqstack &s,int l)//關於這裡為什麼要取位址不是很懂,同時為什麼傳輸的時候沒有傳位址呢
int push(sqstack &st,char c)
}int pop(sqstack &st,char c)
}bool isright(string s,int m)
}else}}
if(st.top==st.base&&s[i]=='\0')
flag=1;
else
flag=0;
if(flag==1)
return true;
else
return false;
}int main()
else
cout<<"no"<}
}
7 2 堆疊操作合法性 20分
假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入第一行給出兩個正整數n和m,其中n是待測序列的個數,m 50 是堆...
5 5 堆疊操作合法性 20分
5 5 堆疊操作合法性 20分 假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入第一行給出兩個正整數n和m,其中n...
5 5 堆疊操作合法性 20分
5 5 堆疊操作合法性 20分 假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入第一行給出兩個正整數n和m,其中n...