【数据结构】中缀表达式转换后缀表达式

前端之家收集整理的这篇文章主要介绍了【数据结构】中缀表达式转换后缀表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我们平时写的数学表达式都是中缀表达式,如:a+b*c+(d*e+f)*g

现在要用计算机来实现这样的表达式,可以转换成后缀表达式再进行运算。自己写了一段代码如下:

#include <iostream>  
#include <stack>
using namespace std;  
void midtotail(char *a)
{
	stack<char> c;
	while (*a!='\0')
	{
		if(*a >= '0' && *a <= '9')
			cout<<*a;
		else if(*a >= 'a' && *a <= 'z')
			cout<<*a;
		else
		{
			if(c.empty() || *a == '(' || *a == '*' || *a == '/')
				c.push(*a);
			else if (*a == ')')
			{
				while (c.top()!= '(')
				{
					cout<<c.top();
					c.pop();
				}
				c.pop();
			}
			else if (*a == '+' || *a == '-')
			{
				if (c.top() != '(')
				{
					while (!c.empty() && c.top()!= '(')
					{
						cout<<c.top();
						c.pop();
					}
				}
				c.push(*a);
			}

		}
		a++;
	}
	while (!c.empty())
	{
		cout<<c.top();
		c.pop();
	}
}
int main()  
{  
	//char a[] = "a+b*c+(d*e+f)*g";
	char *a = new char[30];
	cout<<"请输入一个中缀表达式:";
	cin>>a;
	cout<<"输入的中缀表达式是:";
	cout<<a<<endl;
	cout<<"后缀表达式是:";
	midtotail(a);
	cout<<endl;
	delete [] a;
    return 0;  
}

猜你在找的数据结构相关文章