⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mw.cpp

📁 数据结构中的魔王语言解释算法
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -