1、 课程名称:数据结构 题 目:一元多项式计算 学 院 信息工程学院 学生姓名 学 号 * 专业层次 2012 级本科 班 级 本科信息管理 任课教师 年 月 日 课课 程程 设设 计计 2 一、课程设计题目分析一、课程设计题目分析 本课程设计要求利用 C 语 言 或 C+编 写 , 本 程 序 实 现 了 一 元 多 项 式 的加法、减法、乘法、除法运算等功能。 二、设计思路二、设计思路 本程序采用 C 语言来完成课程设计。 1、首先,利用顺序存储结构来构造两个存储多项式 A(x)和 B(x)的结构。 2、然后把输入,加,减,乘,除运算分成五个主要的模块:实现多项式输 入模块、 实现加法的模块
2、、 实现减法的模块、 实现乘法的模块、 实现除法的模块。 3、 然后各个模块里面还要分成若干种情况来考虑并通过函数的嵌套调用来 实现其功能,尽量减少程序运行时错误的出现。 4、最后编写 main()主函数以实现对多项式输入输出以及加、减、乘、除, 调试程序并将不足的地方加以修改。 三、算法分析三、算法分析 1、相关函数说明: (1)定义数据结构类型为线性表的链式存储结构类型变量 typedef struct Polynomial (2)其他功能函数 插入函数 void Insert(Polyn p,Polyn h) 比较函数 int compare(Polyn a,Polyn b) 建立一元多
3、项式函数 Polyn Create(Polyn head,int m) 求解并建立多项式 a+b,Polyn Add(Polyn pa,Polyn pb) 求解并建立多项式 a-b,Polyn Subtract(Polyn pa,Polyn pb) 求解并建立多项式 a*b,Polyn Multiply(Polyn pa,Polyn pb) 求解并建立多项式 a/b,void Device(Polyn pa,Polyn pb) 输出函数输出多项式,void Print(Polyn P) 销毁多项式函数释放内存,void Destroy(Polyn p) 主函数,void main() 2、主程
4、序的流程基函数调用说明 3 (1)typedef struct Polynomial float coef; int expn; struct Polynomial *next; *Polyn,Polynomial; 在这个结构体变量中 coef 表示每一项前的系数,expn 表示每一项的指数, polyn 为结点指针类型,属于抽象数据类型通常由用户自行定义,Polynomial 表示的是结构体中的数据对象名。 (2)当用户输入两个一元多项式的系数和指数后,建立链表,存储这两个多项 式,主要说明如下: Polyn CreatePolyn(Polyn head,int m)建立一个头指针为 he
5、ad、项数为 m 的一 元多项式 p=head=(Polyn)malloc(sizeof(struct Polynomial);为输入的多项式申请足 够的存储空间 p=(Polyn)malloc(sizeof(struct Polynomial);建立新结点以接收数据 Insert(p,head); 调用 Insert 函数插入结点 这就建立一元多项式的关键步骤 (3)由于多项式的系数和指数都是随即输入的, 所以根据要求需要对多项式按 指数进行降幂排序。在这个程序模块中,使用链表,根据对指数大小的比较,对 各种情况进行处理,此处由于反复使用指针对各个结点进行定位, 找到合适的位 置再利用 vo
6、id Insert(Polyn p,Polyn h)进行插入操作。 (4)加、减、乘、除、的算法实现: 在该程序中,最关键的一步是实现四则运算和输出,由于加减算法原则是一样, 减法可通过系数为负的加法实现;对于乘除算法的大致流程都是:首先建立多项 式 a*b,a/b,然后使用链表存储所求出的乘积,商和余数。这就实现了多项式 计算模块的主要功能。 (5)另一个子函数是输出函数 PrintPolyn() ; 输出最终的结果,算法是将最后计算合并的链表逐个结点依次输出,便得到整链 4 表,也就是最后的计算式计算结果。由于考虑各个结点的指数情况不同,分别进 行了判断处理。 四、程序新点四、程序新点 通过多次写程序,发现程序在控制台运行时总是黑色的,本次写程序就想 着改变一下,于是经过查资料利用 system(“Color E0“);函数可以