文档详情

数据结构课程设计元多项式的加法减法乘法的实现.doc

发布:2017-03-25约字共29页下载文档
文本预览下载声明
一、设计题目 一元多项式的加法、减法、乘法的实现。 二、主要内容 设有一元多项式Am(x)和Bn(x). Am(x)=A0+A1x1+A2x2+A3x3+… +Amxm Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn 请实现求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×Bn(x)。 要求: 1)? 首先判定多项式是否稀疏 2)??采用动态存储结构实现; 3)??结果M(x)中无重复阶项和无零系数项; 4)??要求输出结果的升幂和降幂两种排列情况 三、具体要求及应提交的材料 1.每个同学以自己的学号和姓名建一个文件夹,如:“312009080611101张三”。里面应包括:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中)、任务书和课程设计说明书的电子文档。 2.打印的课程设计说明书(注意:在封面后夹入打印的“任务书”以后再装订)。 四、主要技术路线提示 为把多个小功能结合成一个完整的小软件,需使用“菜单设计”技术数据结构课程设计出版社2007 [2]严蔚敏(C语言版)严蔚敏(C语言版) 目 录 1需求分析 1 2开发及运行平台 2 3 概要设计 3 4 详细设计 4 5 调试分析 8 6 测试结果 9 7 结论 11 致 谢 12 参考文献 13 附 录 16 1需求分析 动态链表结构下的一元多项式的加法、减法、乘法的实现。 ?设有一元多项式Am(x)和Bn(x). ?Am(x)=A0+A1x1+A2x2+A3x3+… +Amxm ? Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn 实现求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×Bn(x)。2 请输入第1项的系数和指数: 系数:1 指数:1 请输入第2项的系数和指数: 系数:1 指数:2 (2)输出形式 请选择:5 一元多项式A为: x+x^2 一元多项式B为: 4x^4+5x^5+6x^6 (3)程序所能达到的功能1)?首先判定多项式是否稀疏2)?采用动态存储结构实现3)?结果M(x)中无重复阶项和无零系数项4)?要求输出结果的升幂和降幂两种排列情况(4)测试数据:包括正确地输入及其输出结果和含有错误的输入及其输出结果。x+x^2 一元多项式B为: 4x^4+5x^5+6x^6 错误的输入: 请输入第1项的系数和指数: 系数:1 指数:1 请输入第2项的系数和指数: 系数:2 指数:1 输入的该项指数与多项式中已存在的某项相同,请重新创建一个正确的多项式 请输入第1项的系数和指数: 2开发及运行平台 Windows 7 alienware 平台上,Microsoft Visual studio 6.0 环境下开发。所以建议用户在使用时,在windows 7 平台上使用。 3 概要设计 数据类型的定义struct Node { float coef;//结点类型,系数 int exp;//指数 }; typedef Node polynomial; struct LNode { polynomial data;//链表类型 LNode *next; }; typedef LNode* Link; 模块调用关系如图1所示: 图 1 一元多项式计算器模块调用图 4 详细设计 加法模块: void PolyAdd(Link pc,Link pa,Link pb) { Link p1,p2,p,pd; CopyLink(p1,pa); CopyLink(p2,pb); pc=new LNode; pc-next-NULL; p-pc; p1-p1-next; p2-p2-next; while(p1不为空且p2不为空) {if(p1-data.expp2-data.exp) then: p-next=p1;p=p-next; p1=p1-next; else if(p1-data.expp2-data.exp) then: p-next-p2; p-p-next;p2-p2-next; else {p1-data.coef-p1-data.coef+p2-data.coef;//指数相同,系数想加 if(p1-data.coef不等于0) {p-next-p1; p-p-next; p1-p1-next; p2-p2-next; } else {
显示全部
相似文档