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

📄 中缀到后缀.cpp

📁 实现编译原理中缀到后缀的c++程序源代码 实现编译原理中缀到后缀的c++程序源代码
💻 CPP
字号:
#include<iostream>
#include<string>
#include<stack>
using std::stack;
using std::string;
using std::cout;
using std::cin;
using std::endl;
string zzs;
int index=0;
string sta;
string op="+-*/()";
int priorty(char a)
{
	if(a=='+'||a=='-')return 3;
	if(a=='*'||a=='/')return 4;
	if(a=='(')return 5;
	if(a==')')return 1;
	return 0;
}
void f(char a)
{

	if(a==')')
	{
		index++;
		return ;
	}
	if(a=='(')
	{
		while(zzs[index]!=')')
		{
			
			index++;
			if(op.find(zzs[index])!=string::npos)
				f(zzs[index]);
			else
				sta+=zzs[index];
		}
	}
	else
	{
		index++;
		while(index<zzs.length())
		{
			if(op.find(zzs[index])!=string::npos)
			{
				if(priorty(a)>=priorty(zzs[index]))break;
				f(zzs[index]);
			}
			else
			{
				sta+=zzs[index];
				index++;
			}
		}
		sta+=a;
	}
}

int main()
{
	cout<<"请输入中缀式:"<<endl;
	cin>>zzs;
	while(index<zzs.length())
	{
		if(op.find(zzs[index])!=string::npos)
			f(zzs[index]);
		else
		{
			sta+=zzs[index];
			index++;
		}
	}
	cout<<sta<<endl;
	return 0;
}

⌨️ 快捷键说明

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