加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 06:32:20 所属栏目:安全 来源:网络整理
导读:我们平时写的数学表达式都是中缀表达式,如:a+b*c+(d*e+f)*g 现在要用计算机来实现这样的表达式,可以转换成后缀表达式再进行运算。自己写了一段代码如下: #include iostream #include stackusing namespace std; void midtotail(char *a){stackchar c;whi

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

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

#include <iostream>  
#include <stack>
using namespace std;  
void midtotail(char *a)
{
	stack<char> c;
	while (*a!='')
	{
		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;  
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读