急求!!用数据结构的堆栈做出

来源:百度知道 编辑:UC知道 时间:2024/07/06 12:14:06
就是要把中缀表达式A+(B-C/D)*E转换成后缀表达式,在Visual C++里面做出的哦

程序设计语言随软件技术的发展而快速发展,是表达软件的工具,是人机通信的媒介。程序设计语言就是一台抽象机器,程序员利用这个抽象机器的各种功能(语言机制)编制出绘声绘色的软件。程序设计语言从极少数计算机专家知道的机器语言到数以万计的高级程序设计员,经历了从复杂到简单的设计过程。表达式计算是程序设计语言的基本知识,是编译系统的基本问题。然而在高级程序设计语言中,只要给出表达式,高级语言环境就会根据预设的语言机制计算出表达式的结果,编程人员并不了解表达式的计算过程。本文通过算符优先分析和堆栈的方法,给出了算术表达式的计算过程,有助于高级语言初学者和计算机编程人员熟悉计算机内部表达式计算的处理过程,更好地学习和掌握高级语言的编程技术。

2 表达式计算

2.1 算符优先分析
算符优先分析是定义算符之间的某种优先关系,这种关系可以为表示以下三种:
a<ba的优先性低于b
a=ba的优先性等于b
a>ba的优先性高于b
其中a和b代表一种算符,<、=和>不同于数学里的大于、等于和小于,同时a<b并不代表b>a, a=b并不代表b=a。
2.2 表达式表示
在机器内部,任何一个表达式都是由操作数、运算符和分界符组成,分界符表示一个表达式的结束。假设在此讨论的算符只含加、减、乘、除四种算术运算符和左、右圆括号。如一个算术表达式A+(B-C/D)*E,这种算术表达式中的运算符一般总是出现在两个操作数之间称中缀表达式。在计算机的编译系统中,在处理中缀表达式之前,总是先将它变换成后缀表达式,即表达式中的运算符出现在操作数之后,且不含括号。把一个中缀表达式变换成相应的后缀表达式首先考虑运算规则。算术运算的规则是:(1)先乘除后加减;(2)先括号内后括号外;(3)同级别时先左后右。则上面中缀表达式可写成ABCD/-E*+,由此可知后缀表达式的两个特点:(1)后缀表达式与中缀表达式的操作数先后次序相同,只是运算符的先后次序有所变化。后缀表达式的运算符次序就是其执行次序;(2)后缀表达式没有括号(如表1)。
表1 后缀表达式的处理过程
2.3 算符优先关系
由后缀