1、 数据结构课程设计报告书数据结构课程设计报告书 题目名称: 中缀表达式转后缀表达式的实现 1.设计的内容与目的设计的内容与目的 计算机对于用户所输入的数据只能够逐个字符编码为二进制, 并作为字符串 表存,并不能够判断其整体意义,是否为算术表达式还是物理公式之类,因此, 需要程序来解释从而进行合理的处理。假定我们要计算表达式 10+(8-4)*3/4-6 的值,这种书写格式就是中缀表达式(运算符在两个操作数之间) ,然而计算机 在计算这个表达式值的时候会遇到相当的麻烦,原因在于判断计算优先级困难。 然而在后缀表达式中,取消了括号,也不存在优先级问题,计算过程完全按照运 算符出现的先后次序进行,整
2、个计算过程仅需一遍扫描就可完成,比中缀表达式 的计算要简单的得多。 因此本次课程设计的内容就是实现中缀表达式到后缀表达 式的转换。 而本次课程设计的目的不仅仅在于实现中后表达式的转化以简化计算 机的工作,而且能加强我能对数据结构的学习与理解,特别是对堆栈的学习,理 解甚至应用。为我们将理论应用于实际打下坚实的基础。 2.2.数据结构设计数据结构设计 (1) 创建顺序堆栈类创建顺序堆栈类; class SeqStack /顺序堆栈类的定义 private: DataType dataMaxStackSize; int top; public: SeqStack(void) /顺序堆栈构造函数 t
3、op=0; SeqStack(void); /顺序堆栈析构函数 void Push(const DataType item); /入栈 DataType Pop(void); /出栈 DataType GetTop(void)const; /取栈顶元素 int NotEmpty(void)const /堆栈非空否 return(top!=0); ; (2) 顺序堆栈的实现顺序堆栈的实现; void SeqStack:Push(const DataType item) /入栈的实现 if(top=MaxStackSize) cout“堆栈已满!“endl; exit(0); datatop=it
4、em; top+; DataType SeqStack:Pop() /出栈的实现 if(top=0) cout“堆栈已空!“endl; exit(0); top-; return datatop; DataType SeqStack:GetTop(void)const /取栈顶元素的实现 if(top=0) cout“堆栈空!“endl; exit(0); return datatop-1; 3.核心算法核心算法 (1)建立顺序堆栈建立顺序堆栈 op; const int MaxStackSize=100; typedef char DataType; #include“SeqStack.h“ void main() SeqStack op; /堆栈 op 存放后缀 op.Push(#); /将栈顶置为# (2)构造运算符优先级比较函数;构造运算符优先级比较