第一行输入n表示火车数量,第二行字母表示火车进站顺序,第三行字母表示火车出现顺序,用字母后加_in或_out输出火车进出站的总顺序
#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
//定义栈
typedef struct StackNode{
char data;
struct StackNode *next;
} StackNode,*LinkStack;
//栈初始化
void Initstack(LinkStack S)
{
S=NULL;
}
//入栈
LinkStack Push(LinkStack S, char c)
{
LinkStack p;
p=(StackNode*)malloc(sizeof(StackNode));
p->data=c;
p->next=S;
*S=*p;
return S;
}
//出栈
LinkStack Pop(LinkStack S)
{
LinkStack p;
p=(StackNode*)malloc(sizeof(StackNode));
p=S;
S=S->next;
free(p);
return S;
}
//输出顺序
void Print(char a[], char b[], int n)
{
LinkStack S;
Initstack(S);
int i,j = 0;
for (i = 0; i < n; i++)
{
Push(S, a[i]);
printf("%c_in ", S->data);
while (b[j] == S->data)
{
Pop(S);
printf("%c_out", b[j]);
j++;
}
}
}
//主函数
int main()
{
int n;
scanf("%d",&n);
getchar();
char a[maxsize], b[maxsize], c[maxsize];
int i;
for (i = 0; i < n; i++)
{
scanf("%c", &a[i]);
}
getchar();
for (i = 0; i < n; i++)
{
scanf("%c", &b[i]);
}
Print(a, b, n);
return 0;
}
例如输入
3
abc
cba
应该输出a_in b_in c_in c_out b_out a_out
可是输出时却少了b和a的out