《数据结构 课程设计》表达式求值 实验报告

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 04:39:26

《数据结构 课程设计》表达式求值 实验报告
《数据结构 课程设计》表达式求值 实验报告

《数据结构 课程设计》表达式求值 实验报告

  

  算术表达式求值演示

  一、概述

  数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解.同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练.

  在这次的课程设计中我选择的题目是算术表达式求值演示.表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子.设计一个程序,演示用算符优先法对算术表达式求值的过程.深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识.

  二、 系统分析

  

  1. 以字符列的形式从终端输入语法正确的、不含变量的整数表达式.利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程.

  2. 一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案.对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存操作数和运算结果.

  3. 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化. 4. 程序执行时的命令:

  本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入表达式即可.(要注意输入时格式,否者可能会引起一些错误) 5.  测试数据.

  

  2

  

  算术表达式求值演示

  一、概述

  数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解.同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练.

  在这次的课程设计中我选择的题目是算术表达式求值演示.表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子.设计一个程序,演示用算符优先法对算术表达式求值的过程.深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识.

  二、 系统分析

  

  1. 以字符列的形式从终端输入语法正确的、不含变量的整数表达式.利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程.

  2. 一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案.对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存操作数和运算结果.

  3. 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化. 4. 程序执行时的命令:

  本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入表达式即可.(要注意输入时格式,否者可能会引起一些错误) 5.  测试数据.

  操作集合:

  (1)void InitStack1(SqStack1 &S1);//声明栈建立函数 (2)void InitStack2(SqStack2 &S2);//声明栈建立函数

  (3)void evaluate(SqStack1 &S1,SqStack2 &S2);//确定如何入栈函数 (4)void Push1(SqStack1 &S1,char e);//声明入栈函数 (5)void Push2(SqStack2 &S2,float e);//声明入压栈函数 (6)char GetTop1(SqStack1 &S1);//声明取栈顶元素函数 (7)float GetTop2(SqStack2 &S2);//声明取栈顶元素函数 (8)char Pop1(SqStack1 &S1);//声明出栈函数 (9)float Pop2(SqStack2 &S2);//声明出栈函数 (10)char Compare(char m,char n);//声明比较函数

  (11)float Operate(float a,char rheta,float b);//声明运算函数 (12)void DispStack1(SqStack1 &S1);//从栈底到栈顶依次输出各元素 (13)void DispStack2(SqStack2 &S2);//从栈底到栈顶依次输出各元素         }ADT SqStack

  结构分析:

  栈中的数据节点是通过数组来存储的.因为在C语言中数组是用下标从零开始的,因此我

  们在调用他们的数据是要特别注意.指针变量的值要么为空(NULL),不指向任何结点;要么其值为非空,即它的值是一个结点的存储地址.注意,当P为空值时,则它不指向任何结点,此时不能通过P来访问结点,否则会引起程序错误.如果输入的数字不符合题目要求,则会产生错误结果.

  算法的时空分析:

  时间和空间性能分析:时间上,对于含n个字符的表达式,无论是对其进行合法性检测还是对其进行入栈出栈操作n次,因此其时间复杂度为O(n).空间上,由于是用数组来存储输入的表达式,用栈来存储运算中的数据和运算符,而栈的本质也用到的数组,数组在定义时必须确定其大小.在不知表达式长度的情况下确定数组的长度确非易事,此时极易造成空间的浪费,因此空间性能不是很好.

《数据结构 课程设计》表达式求值 实验报告 数据结构实验 四则运算表达式求值 数据结构实验7 标识符树与表达式求值 求《数据结构》课程设计(题目:算术表达式求值)系统应具备的功能:(1)设计算术表达式的存储结构(2)实现前缀表达式、中缀表达式和后缀表达式的求值 (3)输出求值结果希望 求一数据结构课程设计心得体会. 表达式求值的实验报告博客 我用C语言写一个关于算术表达式求值的程序.(用数据结构中的栈知识) 数据结构 画出表达式的表达式树 用C++实现布尔表达式的真值问题目的:本课程设计是求中缀算术表达式真值问题.求中缀算术表达式值的问题是数据结构中栈的一个典型应用.通过本题,学生应掌握中缀表达式和后缀表达式的 C语言版数据结构课程设计利用栈求表达式的值编写程序实现表达式求职,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值.主要功能叙述如下:1.从键盘上输入表达式.2.分析该表 数据结构课程设计!算术表达式与二叉树!【问题描述】一个表达式和一棵二叉树之间,存在着自然的对应关系.写一个程序,实现基于二叉树表示的算术表达式的操作.知识点:二叉树,表达式树, 数据结构课程设计:设有n个人围坐在一个圆桌周围,编号为1,2,…,n.现在从第s个人开始逆序报数,即:第s个人开始逆序报数,即:第s个人报1,第s-1个人报2,第s-2个人报3,依此类推;数到第m个人出 c#算术表达式 求值 利用栈表达式求值 matlab表达式编写求值 后缀表达式求值 c++ 后缀表达式求值算法 表达式求值objective-c