1、问题描述
任何一个表达式,都可以用一颗表达式树来表示。输入一个 中缀表达式,这个表达式用变量来表示(不含数字),将这个中缀表达式用表达式二叉树的形式输出出来。例如,表达式a+b*c,可以表示为如下的表达式树:![]()
2、具体要求
输入分为三个部分。第一部分为一行,即中缀表达式(长度不大于 50)。中缀表达式可能含有小写字母代表变量(a-z),也可能含有运算符(+、-、*、/、小括号),不含有数字,也不含有空格。第二部分为一个整数 n(n <= 10),表示中缀表达式 的变量数。第三部分有 n 行,每行格式为 C x,C 为变量的字符,x 为该变量的值。
3、样例输入输出
(1)样例输入
a+b*c
3
a 2
b 7
c 5
(2)样例输出
abc*+ + / \ a * / \ b c 37
4、具体实现
(1)数据结构设计
首先定义一个 number 类型数组用于存储变量和变量的值,然后定义一个定义一个链式存储结构的二叉树。最后再定义一个栈类型,用于存储表达式,便于实现中缀表达式转化为后缀表达式。
(2)具体代码
#include<iostream>
#include<string>
#include <cstring>
#include<cmath>
#include<stack>
#define OK 1
#define ERROR 0
#define MAXSIZE 50
using