数据结构中典型的用栈解决的问题
直接调用c++ STL模板库中的栈就可以解决了
#include<iostream>
#include<stack>
using namespace std;
// 栈的五种操作
stack <char> my; //定义栈
my.empty() ; // 判断栈是否非空
my.size(); // 判断栈中元素的个数
my.push(a[i]); // 压栈
my.top(); // 取出栈顶元素
my.pop(); // 弹出栈顶元素
下面是解题代码
post code:
#include<stdio.h>
#include<iostream>
#include<stack>
#include<string.h>
using namespace std;
stack<char> my;
char a[20];
char b[20];
char c[200][20];
char in[20]="in";
char out[20]="out";
int main()
{
int n,i,ch,j,k;
while(scanf("%d",&n)!=EOF)
{
while(my.empty()==0)
my.pop();
scanf("%s",a);
scanf("%s",b);
j=k=0;
for(i=0;i<n;i++)
{
my.push(a[i]);
strcpy(c[j],in);
j++;
while((my.size()!=0)&&(ch=my.top())) //如果栈中无元素 跳出
{
if(ch==b[k]){my.pop(); //如果有数组 a和b 相等则a栈顶元素出栈
k++;
strcpy(c[j],out); //c 数组记录进栈和出栈情况
j++;
}
else break; //b 元素向后退一个 若不相等跳出循环
}
}
if(my.size()!=0)printf("No.\nFINISH\n");
else { printf("Yes.\n");
for(i=0;i<j;i++)
printf("%s\n",c[i]);
printf("FINISH\n");
}
}
}