1、 数据结构数据结构 课程设计报告课程设计报告 学 号: 姓 名: 班 级: 10 计算机科学与技术(2)班 指导教师: 成 绩: 一、一、 课程设计基本情况课程设计基本情况 1、设计名称、设计名称 一元多项式计算 2、主要功能、主要功能 能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将 结果输出; 3、设计平台、设计平台 电脑、Visual c+ 6.0 二、二、 系统设计系统设计 1、算法思想、算法思想 根据一元多项式相加的运算规则: 对于两个一元多项式中所有指数相同的项, 对应指数相加(减) ,若其和(差)不为零,则构成“和(差)多项式”中的一 项;对于两个一元多
2、项式中所有指数不相同的项,则分别写到“和(差)多项式” 中去。 因为多项式指数最高项以及项数是不确定的,因此采用线性链表的存储结构 便于实现一元多项式的运算。为了节省空间,我采用两个链表分别存放多项式 a 和多项式 b,对于最后计算所得的多项式则利用多项式 a 进行存储。主要用到了 单链表的插入和删除操作。 (1)一元多项式加法运算一元多项式加法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的 话,系数就应该相加;相加的和不为零的话,用头插法建立一个新的节点。P 的 指数小于 q 的指数的话就应该复制 q 的节点到多项式中。P 的指数大于 q 的指数 的话,就应该复
3、制 p 节点到多项式中。当第二个多项式空,第一个多项式不为空 时, 将第一个多项式用新节点产生。 当第一个多项式空, 第二个多项式不为空时, 将第二个多项式用新节点产生。 (2)一元多项式的减法运算一元多项式的减法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相 等的话,系数就相减;相加的和不为零的话,用头插法建立一个新的节点。p 的 指数小于 q 的指数的话,就应该复制 q 的节点到多项式中。P 的指数大于 q 的指 数的话就应该复制 p 的节点到多项式中,并且建立的节点的系数为原来的相反 数; 当第二个多项式空, 第一个多项式不为空时, 将第一个多项式用新节点产生。
4、 当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生,并 且建立的节点的系数为原来的相反数。 2、概要设计、概要设计 (1)主函数流程图主函数流程图: (注:a 代表第一个一元二次方程,b 代表第二个一元二次方程) 开 始 定义结构体 定义函数类型及名称 构造指数比较函数 排列顺序(降序) 用单链接储存 a,b 项目的系数和指数 开 始 进 行 加 减 法 运 算 输 出 构 造 出 的 多 项 式 指数不同 输出多项式,求项数 创建并初始化多项式链表 输 入 系 数 和 指 数 指数相同 合并同类项 按指数排序 结 束 将 单 链 表 的 节 点 释 放,使 已 建 立 的 多 项 式 销 毁 a 项的指数值=b 项的指数值 选 择 语 句 a 项指数值b 项指数值 (2)一元多项式计算算法用类一元多项式计算算法用类 C 语言表示:语言表示: Typedef struct00 /项的表示,多项式的项作为 LinkList 的数据元素 Float co