数据结构——表达式树

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 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值