- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 10
课程名称 数据结构课程设计课题名称 一元稀疏多项式计算器
目录
一、课题的主要功能… 4
二、课题的功能模块的划分… 6
三、主要功能的实现… 7
四、程序调试… 9
五、总结(程序设计心得与体会)…………………………………
11
六、附件(所有程序的原代码)……………………………………
12
七、评分表… 18
一、课题的主要功能
a、课程题目
一元稀疏多项式计算器
b、需求分析
1、一元稀疏多项式简单计算器的功能是:
输入并建立多项式;
输出多项式,输出形式为整数序列: n,c1,e1,c2,e2,………cn,en,其中 n
是多项式的项数,ci 和 ei 分别是第 i 项的系数和指数,序列按指数降序排列;
多项式 a 和 b 相加,建立多项式 a+b;
多项式 a 和 b 相减,建立多项式 a-b;
计算多项式在 x 处的值。
2、设计思路:
定义线性表的动态分配顺序存储结构;
建立多项式存储结构,定义指针*next
利用链表实现队列的构造。每次输入一项的系数和指数,可以输出构造的一元多项式
演示程序以用户和计算机的对话方式执行,即在计算机终站上显示“提示信
息”之后,由用户在键盘上输入演示程序中规定的运行命令;最后根据相应的输入数据(滤去输入中的非法字符)建立的多项式以及多项式相加的运行结果在屏幕上
显示。多项式显示的格式为:c1x^e1+c2x^e2+…+cnx^en
3、设计思路分析
要解决多项式相加,必须要有多项式,所以必须首先建立两个多项式,在这里采用链表的方式存储链表,所以我将结点结构体定义为
序数
序数 coef
指数 expn
指针域 next
运用尾插法建立两条单链表,以单链表 polyn p 和 polyn h 分别表示两个一元多项式 a 和 b,a+b 的求和运算等同于单链表的插入问题(将单链表polyn p 中的结点插入到单链表 polyn h 中),因此“和多项式”中的结点无须另生成。
为了实现处理,设 p、q 分别指向单链表 polya 和 polyb 的当前项,比较 p、q 结点的指数项,由此得到下列运算规则:
① 若 p-expnq-expn,则结点p 所指的结点应是“和多项式”中的一项,令指针
p 后移。
② 若 p-expn=q-expn,则将两个结点中的系数相加,当和不为0 时修改结点 p 的系数。
③ 若 p-expnq-expn,则结点q 所指的结点应是“和多项式”中的一项,将结点
q 插入在结点 p 之前,且令指针 q 在原来的链表上后移。
二、课题的功能模块的划分
内容包括:
函数 CreatePolyn 建立一个头指针为 head、项数为 m 的一元多项式,然后调运函数Insert 向生成链表中保存多项式项数及每项的指数、系数。函数CreatePolyn 生成多项式a 和多项式 b。
通过函数 compare 和函数 PrintPolyn 对多项式 a 和多项式 b 指数、系数进行分析。当多项式 a 指数指数大于多项式 b 指数时,链表保存多项式 a 系数;当多项式 b 指数指数大于多项式 a 指数时,链表保存多项式 b 系数;当多项式 b 指数指数等于多项式 a 指数时,对多项式 a 和多项式 b 系数进行加减运算,之后将系数保存在链表中。
函数 Polyn AddPolyn 对多项式 a 和多项式 b 进行加运算,调运函数 compare、函数PrintPolyn、函数 CreatePolyn。
函数 SubtractPolyn 对多项式 a 和多项式 b 进行减运算,其对多项式 b 中各系数正负取反,然后调用函数 Polyn AddPolyn 进行 a+(-b)。
主函数运行分别输入多项式和多项式的项数、系数和指数,然后选择对多项式操作
A:a+b 或 B:a-b,从而实现对多项式的加减运算。
函数的调用关系图:
三、主要功能的实现
1、元素类型、结点类型和指针类型: typedef struct Polynomial{
float coef; //系数
int expn; //指数struct Polynomial *next;
}*Polyn,Polynomial;
2、建立一个头指针为 head、项数为 m 的一元多项式, 建立新结点以接收数据, 调用 Insert 函数插入结点:
Polyn CreatePolyn(Polyn head,int m){ int i;
Polyn p; p=head=(Polyn)malloc(sizeof(struct Polynomial)); head-next=NULL;
for(i=0;im;i++)
{
p=(Polyn)malloc(sizeof(struct
原创力文档


文档评论(0)