mw.cpp

来自「数据结构中的魔王语言解释算法」· C++ 代码 · 共 75 行

CPP
75
字号
#include "mowang.h"

void main(int argc,char* argv[])
{	int n;
	cout<<"请输入魔王字符的个数:";
    cin>>n;
    cout<<endl;
    char *a;
    a=new char[n+1];
    a[n]=0;
    cout<<"请输入魔王语言:"
    cin>>a;
    
     SqStack s;
    	IiniStack(s);
     SqStack s1;
    	IiniStack(s1);
     SqStack s2;
    	IiniStack(s2);
     SqQueue q;
        InitQueue(q);
        
	for(int i=n-1;i>=0;i--)
		{
			Push(s,a[i]);		//将输入的魔王语言入栈s
		}
}

 	char e,e1;
 	int i=0;
 	while(!StackEmpty(s))
 	{
 		Pop(s,e)
 		if(e=='A')
 		PushA(s1);
 		if(e=='B')
 		PushB(s1);
 		if(e=='(')
 			{
 				pop(s,e);                 //将(出栈栈s中去
 				while(e!=')')
 				{
 					EnQueue(q,e);          //将)前面的字符入到队q里
 					Pop(s,e);
 				}   //while                    只要碰不到),里面的字符全部出栈
 				DeQueue(q,e);                     //出队
 				while(!QueueEmpty(q))              
 				{
 					DeQueue(q,e1)
 					a[i]=e1;
 					i++;
 				}     //while                  将队内所有的字符出来
 				for (n=0;n<=i;n++)
 					{
 						Push(s2,a[n]);           //插入到s2中
 					}
 				while(!StackEmpty(s2))
 				{
 				Push(s1,e);                     
 				Pop(s2,e1);
 				Push(s1,e1);
 				}//for
 				Push(s1,e);
 			}//for
 	Reserve(s1);                       //将s1就地逆置
 	
 	cout<<endl;
 	cou<<"魔王语言可以解释成:";
 	while(!StackEmpty(s1))
 	{
 		Pop(s1,e1);
 		cout<<el;
 	}
 	cout<<endl;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?