1、 1 数据结构数据结构 -课程设计报告课程设计报告 题目:题目: 多项式计算器多项式计算器 班级:班级: 学号:学号: 姓名:姓名: 指导教师:指导教师: 2 目录目录 一、 课程设计目的.3 二、 设计内容.3 三、 总体设计.4 四、 详细设计.4 五、 程序调试.8 六、 设计总结11 3 一、课程设计的目的一、课程设计的目的 课程设计是数据结构必不可缺的一个重要环节,它可加深我们对该课程所学内容的 进一步的理解与巩固,是将计算机课程与实际问题相联接的关键步骤。通过课程设计,能够 提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,通过课程设计将 C 语言与数据结构结合在一起
2、实际应用。 二、二、设计内容设计内容 设计一个稀疏多项式简单计算器 设计要求设计要求: 输入并分别建立多项式 A 和 B 输入输出多项式,输出形式为整数序列: n,c1,e1,c2,e2,其中 n 是多项式的项数, ci 和 ei 是第 i 项的系数和指数, 序列按指数降序排列完成两个多项式的相加、相减、相乘,并将多项式结果输出 【问题描述问题描述】 设计一个稀疏多项式简单计算器。用户输入两个多项式的项数、系数与指数,计算加减 乘除等的结果。 【功能设计功能设计】 提示用户输入两个多项式 A 和 B,输入形式为: 先输入多项式 A 的项数, 回车, 输入多项式 A 第一项的系数,每一项按照先输
3、入系数, 空格或回车; 输入多项式 A 第一项的指数, 继续输入多项式 A 的其他项,输入方式与上同; 再建立多项式 B,数据输入方式与建立多项式 A 相同。 两个多项式建立完毕后,再选择以下功能进行相应的运算。 1. 输出多项式 A 和 B 2. 计算多项式 A+B 3. 计算多项式 A-B 4. 计算多项式 A*B 5. 重新创建多项式 6. 退出 【数据结构】【数据结构】 typedef struct Polynomial /结点类型 float coef; /系数 int exp; /指数 Polynomial *next; *Polyn; /Polyn 为结点指针类型 void Pr
4、intPolyn(Polyn P); /输出多项式 4 void Insert(Polyn p,Polyn head); /插入结点 Polyn CreatePolyn(Polyn head,int m) ; /创建多项式 void DestroyPolyn(Polyn p); /销毁多项式 int compare(Polyn a,Polyn b); /多项式指数比较 Polyn AddPolyn(Polyn pa,Polyn pb); /加法 Polyn SubPolyn(Polyn pa,Polyn pb); /减法 Polyn MultiplyPolyn(Polyn pa,Polyn p
5、b); /乘法 三、总体设计三、总体设计 图 1 系统功能模块图 四四、详细设计、详细设计 【结点结构结点结构】 coef exp next 图 2 结点结构图 coef:系数域,存放非零项的系数; 进入系统界面 菜单 输 出 多 项 式 计 算 A + B 计 算 A B 计 算 A * B 重 新 输 入 退 出 系 统 一元多项式计算器 5 exp:指数域,存放非零项的指数; next:指针域,存放只想下一结点的指针。 【多项式的链接表示多项式的链接表示】 多项式的项采用单链表存储, 每一个非零项对应单链表的一个结点, 且单链表按照指数递减 有序排列 。 多项式的逻辑结构:视为线性表 p(x)=3x14-8x8+6x2+2 多项式的存储表示 p(x)=3x14-8x8+6x2+2 ( (3,14),(-8,8),(6,2),(2,0) ) 图 3 多项式的链表表示 【采用带头结点的单链表采用带头结点的单链表】 设两个工作指针 pa 和 pb,分别指向两个单链表的开始结点,两个多项式求和实际上 是对结点 pa 的指数域和结点 pb 的指数域进行比较,这会出现下列三种情况: (1)若