数据结构课件:算术表达式求值算法详解

需积分: 16 0 下载量 117 浏览量 更新于2024-07-13 收藏 6.47MB PPT 举报
"该资源是一份关于数据结构的课件,重点讲解了算术表达式的求值方法,涉及数据结构的基础知识,包括操作符栈OPTR和操作数栈OPND的使用,以及如何通过这些栈处理算术表达式。课程还提到了一些相关的教科书资源,并对学习者提出了具体的要求和联系方式。" 在计算机科学中,算术表达式的求值是一个常见的问题,这里介绍了一种基于栈的方法,通常称为中缀表达式到后缀表达式(逆波兰表示法)的转换。首先,创建一个操作符栈OPTR用于存放运算符,另一个操作数栈OPND用于存放运算数。按照以下步骤进行: 1. 将特殊符号'#'压入操作符栈OPTR,作为初始标记。 2. 从左到右逐个扫描表达式中的字符c: - 如果c是数字或其他操作数,将其压入操作数栈OPND。 - 如果c是运算符,比较它与OPTR栈顶的运算符e: - 如果e的优先级低于c(例如,e是'*'或'/',c是'+'或'-'),则将c压入OPTR。 - 如果e的优先级高于c,或者它们具有相同的优先级且e是非关联的(如'='),则从OPTR弹出e,同时从OPND弹出两个操作数a和b,执行运算e(a, b),并将结果压回OPND。重复这个过程直到栈顶运算符的优先级低于c。 - 如果e的优先级等于c,将OPTR的e弹出,因为这意味着c和e是相同优先级的关联运算符。 这个过程持续到表达式扫描完毕。最后,操作数栈OPND的栈顶元素即为表达式的结果。 课程信息中提到了几本关于数据结构的书籍,包括《数据结构、算法与应用:java语言描述》、《数据结构Java语言描述》和《数据结构-Java语言描述》,这些都是学习者可以参考的资源。课程还强调了良好的学习习惯,如准时、认真完成作业、预习和复习,以及实验准备。 在数据结构的学习中,理解数据的逻辑结构和物理结构至关重要。逻辑结构描述了数据元素之间的抽象关系,如集合、线性表、树和图等,而物理结构关注的是数据在内存中的实际布局,包括顺序结构(如数组)和链式结构(如链表)。数据类型则是定义了数据元素的种类及其可执行的操作,如Java中的基本数据类型和构造数据类型(如数组、类和接口)。数据结构是数据元素的集合,这些元素间存在特定的关系,定义了数据的组织方式,包括其逻辑结构和物理结构。