- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计之一元多项式加减乘
##大学
数据结构课程设计报告
题目:顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现
院(系): 计算机工程学院
学生姓名:
班级: 学号:
起迄日期: 2011.06.20-06.30
指导教师:
2010—2011年度 第 2 学期
一、需求分析
1、顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。可以分为几个模块:输入模块、输出模块(升幂降幂)、数据处理模块(多项式的加减乘)、主程序模块。
2、在程序过程中加入汉字提示符,让读者清楚明白的操作该程序。运行程序时看起来简洁有序,操作简单明了
3、程序执行时的命令:①选择创建两个一元多项式②输入第一个一元多项式的项数③依次输入一元多项式的系数和指数④以相同方式输入第二个一元多项式⑤选择操作方式⑥选择降幂或升幂排序⑦输出结果⑧是否退出。
4、测试数据。输入的一元多项式系数指数分别为7 0,3 1,9 8,5 17和8 1,22 7,-9 8。加法结果为;升幂 降幂
减法结果为:升幂 降幂
乘法结果为:升幂 降幂
二、 概要设计
1、设计思路:
在该程序中分别分为顺序存储和链式存储结构。
2、数据结构设计:
一元多项式抽象数据类型的定义:
ADT Polynomial{
数据对象:D={ai|ai∈TermSet,i=1,2…,m,m=0
TermSet中的每一个元素包含一个表示系数的实数和表示指数的整数}
数据关系:R1={ai-1,ai|ai-1,ai∈D, 且ai-1中的指数值ai中的指数值,i=2,…,n}
基本操作:
CreatPolyn(P,m)
操作结果:输入m项的系数和指数,建立一元多项式P.
DesteoyPolyn(P)
初始条件:一元多项式P已存在。
操作结果:销毁一元多项式P。
PrintfPolyn(P)
初始条件:一元多项式P已存在。
操作结果:打印输出一元多项式P。
PolynLength(P)
初始条件:一元多项式P已存在。
操作结果:返回一元多项式P的项数。
AddPolyn(Pa,Pb)
初始条件:一元多项式Pa和Pb已存在。
操作结果:完成一元多项式的加法运算,即:Pa=Pa+Pb,并销毁一元多项式Pb。
SubtractPolyn(Pa,Pb)
初始条件:一元多项式Pa和Pb已存在。
操作结果:完成一元多项式的减法运算,即:Pa=Pa-Pb,并销毁一元多项式Pb。
MultiplyPolyn(Pa,Pb)
初始条件:一元多项式Pa和Pb已存在。
操作结果:完成一元多项式的乘法运算,即:Pa=Pa×Pb,并销毁一元多项式Pb。
}ADT Polynomial
3.软件结构设计:
本程序主要分为四大模块:
①主程序模块
②输入模块:通过Getpolyn函数输入
③输出模块(升幂降幂):PrintPolyn函数实现输出
④数据处理模块(多项式的加减乘):通过一元多项式的Polynomial基本操作实现
三、 详细设计
1.定义程序中所有用到的数据及其数据结构,基本操作typedef struct
{ float coef; //系数
int expn; //指数
}term;
/*1、创建并初始化多项式链表*/
polynomail creatpolyn(polynomail P,int m)
{ polynomail r,q,p,s,Q;
int i;
P=(LNode*)malloc(sizeof(LNode));
r=P;
for(i=0;im;i++)
{ s=(LNode*)malloc(sizeof(LNode));
printf(请输入第%d项的系数和指数:,i+1);
scanf(%f%d,s-data.coef,s-data.expn);
r-next=s; r=s;
}
r-next=NULL;
if(P-next-next!=NULL)
{ for(q=P-next;q!=NULL/*q-next!=NULL*/;q=q-next)//合并同类项
for(p=q-next,r=q;p!=NULL;)
if(q-data.expn==p-data.expn)
{ q-data.coef=q-data.coef+p-data.coef;
r-next=p-next;
Q=p;p=p-next;
free(Q);
}
else
文档评论(0)