/*判断一个序列是否为合法的出栈顺序*/
#include <iostream>
#include <stack>
using namespace std;
bool Judge (char *in,char *out){
if (NULL == in || NULL == out) return false;
if (strlen(in) != strlen(out)) return false;
stack<char> st; //构建栈
while (*in != '\0'){ //核心部分自己理解比较好O(∩_∩)O
if (st.empty() || st.top() != *out){
st.push(*in++);
}else{
st.pop(); out++;
}
}
while (! st.empty()){
if (st.top() != *out++) return false;
st.pop();
}
}
int main(){
char in[100],out[100];
gets(in); gets(out); //in为进栈顺序,out为出栈顺序
cout << (Judge(in,out)?"Yes":"No") << endl;
return 0;
}
给定进栈顺序,判断一个序列是否为正确的出栈顺序
4星 · 超过85%的资源 需积分: 50 182 浏览量
2014-01-08
22:54:46
上传
评论 2
收藏 527B RAR 举报
Z爱江山更爱美人M
- 粉丝: 1
- 资源: 8