#include <stdio.h>
#include <stdlib.h>
#define MAXQUEUE 200
int queue[MAXQUEUE];
int front=-1;
int rear=-1;
int EnQueue(char value) /*进队*/
{
if(rear>=MAXQUEUE) return -1; /*队满*/
queue[++rear]=value;
}
char DeQueue() /*出队*/
{
return queue[++front];
}
void main()
{
int i=0;
char e,g;
char reverse[50];
char str[100], *get_str=str;
printf("请输入魔王语言:");
gets(str);
while(*get_str!='\0')EnQueue(*get_str++);
while(front!=rear) /*判断队列是否为空*/
{
g=DeQueue();
if(g=='(')
{
i=0;
e=DeQueue(); /*将括号内的第一个元素赋值给e */
while((g=DeQueue())!=')') /*对括号内的元素进行逆置并存入数组*/
{
reverse[i++]=g;
}
i--;
while(i>=0) /*打印括号内元素*/
{
if(e=='A') printf("sae");
else if(e==')') continue;
else if(e=='B') printf("tsaedsae");
else printf("%c",e); if(reverse[i]=='A') printf("sae");
else if(reverse[i]=='B') printf("tsaedsae");
else printf("%c",reverse[i]);
i--;
}
}
if(g=='A')printf("sae"); /*当元素为A,B的情况*/
else if(g==')') continue;
else if(g=='B') printf("tsaedsae");
else printf("%c",g);
}
printf("\n");
getch();
}
评论0