文章导航
大二上数据结构实验1内容,使用C语言实现数学表达式求值
一、实验题目和要求
(一) 实验目的:熟练掌握栈、队列等基本操作及其在实际问题中的应用。
(二)基本要求:实现栈的基本操作,及表达式求值的实现。
(三)内容提要:用户需要输入一个表达式。
(四)实现:
1、实现栈的push、pop基本操作;
2、检测表达式的输入是否是正确的数学表达式;
3、对于正确的数学表达式求取其值。
注:1)数学表达式的判读与求值需支持加减乘除、小括号、中括号、大括号、幂运算。
2)不正确的表达式可能包括:字母、非运算符号、括号不匹配,运算符的排列不符合表达式形式等多种情况。
3)表达式通过.txt文件读取而获得。
二、按不同功能分析各程序模块
(一)包含库函数、定义常量、变量类型
1 |
|
(二)定义运算符优先级表
1 | unsigned char Prior[12][12] = |
(三)数据结构基础定义(栈的存储结构定义)
1 | //-------------数据结构基础定义------------ |
(四)子函数定义
(包括两两运算操作、判断字符是否为运算符、判断运算符的优先级、计算表达式)
1 | //------------子函数定义-------------- |
(五)主函数
包括从txt文件输入表达式、调用计算函数求值、输出
1 | int main(void) |
三、运行结果分析
(一)基础用例
全部通过
(二)拓展用例
虽然检测到了表达式错误,但是还是运算出了结果,在检测到表达式有问题时,没有跳出返回,而是继续执行,所以出现了错误。
通过
通过
通过
未通过,在定义运算符优先级时,未能考虑到中括号的嵌套问题,导致没有检测出错误,运算出了结果。
通过