一:需求分析:
【问题的描述】
一个表达式和一棵二叉树之间,存在着自然的对应关系。写一个程序,实现基于二叉树
表示的算术表达式 的操作。
【基本要求】
假设算术表达式 内可以含有变量()常量()和二元运算符
(,,,,(乘幂))。实现以下操作:
()以字符序列的形式输入语法正确的前缀表达式并构造表达式
。
()用带括号的中缀表达式输出表达式 。
() !,"实现对变量 ! 的赋值(!#"),变量的初值为 。
($)!%&对算术表达式 求值。
(')()&构造一个新的复合表达式()()。
【选做内容】
()在表达式中添加三角函数等初等函数的操作。
()增加常数合并操作 * (合并表达式 中所有常数运算。例如,对表
达式 #()+$进行合并常数的操作后,求得 #'+。
()以表达式的原书写形式输入。
【测试数据】
() 分别输入 ;,,+",'-,. 并输出。
() 每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。
二:概要设计
【数据类型的定义】
本程序用了数据结构中“二叉树的链表”存储结构,即
/0&"123树的存储结构
4
,放 数据,当有数字时,56#787,用787标志结点放的是数字
"956,放字母字符串或是运算符号字符
&"123%"9%"9%,
:12312,
本程序还利用了栈的结构体:
;<=2(>?@3@2?=@A栈的顺序表示存储结构
;<=2(>@3(*32
/0"9=%)2/,
/0&"
4
=%)2/+,
=%)2/,
"B,
:=C="B,
【主程序的流程】
用户运行本程序,首先进入一个主菜单界面,在主界面中用户可以根据界面里的提示
实现各种表达式类型的操作演示。如:
第 1 页 共 33 页