栈与队列
当栈为空或者栈顶当前值与order2[i]不同时 进栈 “in”命令进队列
否则出栈 ''out"命令进队列
如果不能按照给的序列进行 就结束
简单说一下模板类(从网上贴过来的。。):
queue 模板类的定义在<queue>头文件中。
与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类
型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
定义queue 对象的示例代码如下:
queue<int> q1;
queue<double> q2;
queue 的基本操作有:
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
#include <iostream>
#include <queue>
#include <stack>
#include <string>
using namespace std;
char order1[12],order2[12];
int i,j,n;
void determine()
{
stack<char>st;
queue<string>q;
for(i=0,j=0;i<n&&j<=n;)
{
if(st.empty()||st.top()!=order2[i])
{
if(j==n)
{
cout<<"No.\nFINISH"<<endl;
return;
}
st.push(order1[j++]);
q.push("in");
}
else
{
st.pop();
q.push("out");
i++;
}
}
cout<<"Yes."<<endl;
string ch;
while(!q.empty())
{
ch=q.front();
cout<<ch<<endl;
q.pop();
}
cout<<"FINISH"<<endl;
}
int main()
{
while(cin>>n)
{
cin>>order1>>order2;
determine();
}
return 0;
}