1、目目 录录 一概述一概述 2 二总体方案设计二总体方案设计 2 三详细设计三详细设计. 4 四程序的调试与运行结果说明四程序的调试与运行结果说明 6 五课程设计总结五课程设计总结 6 参考文献参考文献.错误!未定义书签。 附录附录.8 一一 概述概述 一、课程设计的目的与要求一、课程设计的目的与要求 本课程设计是为了配合数据结构课程的开设本课程设计是为了配合数据结构课程的开设,通过设计一通过设计一个个 完整的程序完整的程序,使学生掌握数据结构的应用使学生掌握数据结构的应用,算法的编写算法的编写,类类 C 语言的算语言的算 法转换成法转换成 C 程序并用程序并用 Turbo C2.0 或或 Vi
2、sual C+6.0 上机调试的基本上机调试的基本 方法方法。要求如下要求如下: 1.要充分认识课程设计对自己的重要性要充分认识课程设计对自己的重要性,认真做好认真做好课程课程设计前的各设计前的各 项准备工作项准备工作。 2.既要虚心接受老师的指导既要虚心接受老师的指导,又要充分发挥主观能动性又要充分发挥主观能动性.结合课题结合课题, 独立思考独立思考,努力钻研努力钻研,勤于实践勤于实践,勇于创新勇于创新。 3.独立按时完成规定的工作任务独立按时完成规定的工作任务,不得弄虚作假不得弄虚作假,不准抄袭他人内不准抄袭他人内 容容,否则成绩以不及格计否则成绩以不及格计。 4.课程设计期间课程设计期间
3、,无故缺席按旷课处理无故缺席按旷课处理;缺席时间达四分之一以上缺席时间达四分之一以上 者者,其成绩按不及格处理其成绩按不及格处理。 5.在设计过程中在设计过程中,要严格要求自己要严格要求自己,树立严肃树立严肃,严密严密,严谨的科学态度严谨的科学态度, 必须按时必须按时,按质按质,按量完成课程设计按量完成课程设计。 6.小组成员之间小组成员之间,分工明确分工明确,但要保但要保持联系畅通持联系畅通,密切合作密切合作,培养良好培养良好 的互相帮助和团队协作精神的互相帮助和团队协作精神。 二、需求分析二、需求分析 本课程设计的课题为表达式求值,要求:本课程设计的课题为表达式求值,要求: 1.用户将表达
4、式原样输入 (在表达式结尾加上用户将表达式原样输入 (在表达式结尾加上#) , 能得出结果 (为) , 能得出结果 (为 减小难度,运算结果的减小难度,运算结果的 10 进制形式的值,不超过进制形式的值,不超过 longdouble 的存储的存储 范围) ;范围) ; 2.输入的数可以为小数(为减小难度,小数的整数与小数部分均输入的数可以为小数(为减小难度,小数的整数与小数部分均 不超过不超过 10 位) ,负数(如果负数前有运算符,则应将负数括起来) ,位) ,负数(如果负数前有运算符,则应将负数括起来) , 以及以及 2 进制,进制,8 进制,进制,10 进制,进制,16 进制的数(为减小
5、难度,数出的进制的数(为减小难度,数出的 结果都以结果都以 10 进制形式表示) ;进制形式表示) ; 3.运算符号包括() 、运算符号包括() 、+、*、/;括号可以多;括号可以多重;重; 二二 总体方案设计总体方案设计 1.使用双链表的数据结构表示数据的存储,将用户输入的表使用双链表的数据结构表示数据的存储,将用户输入的表 达式以字符形式存入双链表中。达式以字符形式存入双链表中。 2.对以负数开头、以括号开头、左括号后紧跟负数的特殊情对以负数开头、以括号开头、左括号后紧跟负数的特殊情 况作处理。况作处理。 3.将数与运算符分开;将数与运算符分开; 4.依次找到表达式最内层括号,次内层括号依
6、次找到表达式最内层括号,次内层括号每次找每次找 到括号内的表达式,便将其进行只有到括号内的表达式,便将其进行只有 加减乘除运算的计算。加减乘除运算的计算。 结构体类型:结构体类型: /用来存储字符的结点类型用来存储字符的结点类型 typedef struct CharNode char c; struct CharNode *next; CharNode; /用来存储数的结点类型用来存储数的结点类型 typedef struct IntNode long double i; struct IntNode *next; IntNode; /用来存储数的结点类型用来存储数的结点类型 typedef struct Node long double n; struct Node_ys_char *next; Node; /用来存储运算符的结点类型用来存储运算符的结点类型 typedef struct Node_ys_char char c; struct Node_ys_char *next_c; struc