微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我们平时写的数学表达式都是中缀表达式,如: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;  
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐