ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:73.44KB ,
资源ID:7189974      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7189974.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计一元多项式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计一元多项式.docx

1、数据结构课程设计一元多项式长 沙 学 院课程设计说明书题目一元多项式运算系(部)计算机科学与技术系专业(班级)软件工程6班姓名邹 胤 屏学号2010022615指导教师魏歌起止日期2011.09.06-2011.09.16课程设计任务书课程名称:数据结构与算法设计题目:一元多项式计算问题已知技术参数和设计要求:问题描述:设计一个稀疏多项式简单计算器基本要求:(1)输入并分别建立多项式A和B(2)输入输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数降序排列(3)完成两个多项式的相加、相减,并将结果输出;测试数据:(1)

2、A+B A= 3x14-8x8+6x2+2 B=2x10+4x8+-6x2 (2) A-B A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7(3) A+B A=x3+x1 B=-x3-x1(4) A+B A=0 B=x7+x5+x3+x1(5) A-B A=100x100+50x50+20x20+x B=10x100+10x50+10x20+x选作内容:(1).多项式在x=1时的运算结果(2)求多项式A和B的乘积设计工作量:40课时工作计划:见课表指导教师签名:日期:教研室主任签名: 日期:系主任签名: 日期:长沙学院课程设计鉴定表姓名邹胤屏学号20100226

3、15专业软件工程班级六班设计题目图书预定系统指导教师付细楚指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;摘要 这是我第一次接触关于数据结构的程序设计,这一次有三个可选择,而我选择了一元多次项式的计算器来作为我这次的任务。输入多个或一个多项式后,一元多项式有两两进行相加、相减、相乘,还有把它按次幂的升或降进行排列输出。我做的主界面很普通,按0-4来选择这些功能,如果选择没有在这个范围了,你就可以是否重新选择。这次主要运

4、用了链表存储结构,这样可以很方便的计算一元多项式的基本运算。这次设计还用到了C+和C语言的相关知识,在主函数中可以通过调用来完成运算。关键字:数据结构、C+、C语言、链表、一元多项式运算目录第1章 需求分析61.1 问题描述61.2 基本要求61.3 测试数据61.4 选作内容6第2章 系统分析72.1 功能模板设计72.1.1多项式创建72.1.2 主菜单722 编码8第3章. 运行效果图93. 1 创建多项式A.B93.2 主菜单93.3 输出多项式A B 103.4 多项式A+B103.5 多项式A-B103.6 多项式在X处的值103.7 退出10总结 11参考文献 12附录A源程代码

5、13 第1章. 需求分析1.1 问题描述:设计一个稀疏多项式简单计算器1.2 基本要求: (1) 输入并分别建立多项式A和B。 (2) 输入输出多项式,输出形式为整数序列: n,c1,e1,c2,e2, 其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数降序排列。(3)完成两个多项式的相加、相减,并将结果输出。1.3 测试数据:(1)A+B A=3x14-8x8+6x2+2; B=2x10+4x8-6x2(2) A-B A=11x14+3x10+2x8+10x6+5 ; B=2x14+3x8+5x6+7(3) A+B A=x3+x1 ; B=-x3-x1(4) A+B A=0 ;

6、 B=x7+x5+x3+x1(5)A-B A=100x100+50x50+20x20+x ; B=10x100+10x50+10x20+x1.4 选作内容:(1)多项式在x=1时的运算结果;(2)求多项式A和B的乘积第二章. 系统分析21 功能模块设计 2.1.1 多项式创建 文字说明:先输入多项式的项数,再用for循环把多项式的系数和指数一一输入,在输入的时候调用void Insert(node * p,node * h)来进行排序(降幂)并且把相同的项数合并。2.1.2 主菜单 文字说明:如图所示,选择0-4来操作系统功能.22 编码/A*B时while(s-next) /系数取反 s-c

7、oef*=(-1); s=s-next; /创建多项式中相同次幂时合并if(!q2-coef)/系数为0的话释放结点 q1-next=q2-next; deleteq2; else /指数为新时将结点插入 p-next=q2; q1-next=p; 第三章.运行效果图图3.1 创建多项式A.B图3.2 主菜单图3.3 输出多项式A.B 图3.4 多项式A+B 图3. 5 多项式A-B 图3.6 多项式在X处的值 图3.7 退出 总结这一次课程设计我从一开始就没有用心去做,一想到网上有,我就没有了原来做这个的心了,其实一开始我也是从网上搞了这样的一篇下来,但老师说不可以,我又重新做,我做了好久都

8、没有做出来,后来我又把我的书,网上下载的资料看,就这样我又学到了不少知识,如果我没有去查找相应的资料有话,我是做不出来的。也因为如此,我体会了到了凡事要自己动手,不劳而获的东西永远都不是自己的,只有经过自己的努力得到的才会属于自己。这一次让我更加了解了链表,以前不会在输入时排序的,通过这次我了解了。希望我能在这一次后能个更上一层楼,不再想着从别个地方来不劳而获,加油。参考文献1 王挺,周会平,贾丽丽,徐锡山C+程序设计M 北京:清华大学 出版社2 严蔚敏,吴伟民,数据结构(C语言版) 北京:清华大学 出版社3 李跟强,倪飞舟,钟志水,郭清溥 数据结构(C+版)(第二版)习题解答用实训指导 中国

9、水利水电出版社附录A源程代码#includestruct node int coef; /系数 int expn; /指数 node * next;/void Insert(node * p,node * h) if(p-coef=0) deletep; /系数为0的话释放结点 else node * q1;node * q2; q1=h;q2=h-next; while(q2&p-expnexpn)/查找插入位置 q1=q2; q2=q2-next; if(q2&p-expn=q2-expn)/将指数相同相合并 q2-coef+=p-coef; deletep; if(!q2-coef)/系

10、数为0的话释放结点 q1-next=q2-next; deleteq2; else /指数为新时将结点插入 p-next=q2; q1-next=p; /Insert/建立一个头指针为head、项数为m的一元多项式node * createlist(node * head) int i;int m; node * p; p=head=new node; head-next=NULL; coutm; coutendl; for(i=0;im;i+) p=new node;/建立新结点以接收数据 cout请输入第i+1项的系数与指数:p-coef; cinp-expn; Insert(p,head

11、); /调用Insert函数插入结点 return head;void outprintlist(node * head)/输出多项式链表 node * cur=head-next-next; coutnext-coefXnext-expn; while(cur) if(cur-coef)0) coutexpn!=0) & (cur-expn!=1) coutcoefXexpn; else if(cur-expn=0) coutcoef; else coutcoefcoefexpn!=0) & (cur-expn!=1) coutcoefXexpn; else if(cur-expn=0) c

12、outcoef; else coutcoefnext; coutexpnq2-expn) return 1; else if(!q1|q1-expnexpn) return -1; else return 0; else if(!q1&q2) return -1;/q1多项式已空,但q2多项式非空 else return 1;/q2多项式已空,但q1多项式非空/多项式的加法A+Bnode * addlist(node * q1,node * q2) q1=q1-next; q2=q2-next; node * head,* tail,* temp; tail=new node; tail-ne

13、xt=NULL; head=tail; while(q1|q2) temp=new node; switch(compare(q1,q2) case 1: temp-coef=q1-coef; temp-expn=q1-expn; q1=q1-next; break; case 0: temp-coef=(q1-coef)+(q2-coef); temp-expn=q1-expn; q1=q1-next; q2=q2-next; break; case -1: temp-coef=q2-coef; temp-expn=q2-expn; q2=q2-next; break; if(temp-co

14、ef=0) deletetemp; else temp-next=tail-next; tail-next=temp; tail=temp; return head;/多项式的减法A-Bnode * Subtractlist(node * q1,node * q2) node * s=q2; node * s1; if(s=NULL) coutnext) /系数取反 s-coef*=(-1); s=s-next; s1=addlist(q1,s); return s1;/输入x值,计算并返回多项式的值float Valuelist(node * head,float x) node * p;

15、int i; float sum=0,t; for(p=head-next;p;p=p-next) t=1; for(i=p-expn;i!=0;) if(icoef*t; return sum;/ValuePolynint main() int flag=0,g=0; float x; node * A=NULL, * B=NULL, * pc,* pd,* pe;/定义各式的头指针,pa与pb在使用前付初值NULL coutendl; cout建立多项式An;coutendl; A=createlist(A);/建立多项式A cout建立多项式B.endl;coutendl; B=crea

16、telist(B);/建立多项式B /输出菜单 cout*一元多项式的运算*endl; cout* *endl; cout*- 操作提示 -*endl; cout* *endl; cout*-0.退出功能系统-*endl; cout* *endl; cout* 1.输出多项式A和B *endl; cout* 2.建立多项式A+B *endl; cout* 3.建立多项式A-B *endl; cout* *endl; cout*-4.计算多项式A在x处的值-*endl; cout* *endl; cout*一元多项式的运算*endl; while(g=0) coutflag; coutendl;

17、 switch(flag) case 1: cout多项式A:endl;outprintlist(A); cout多项式B:endl;outprintlist(B); coutendl; break; case 2: pc=addlist(A,B); cout多项式A+B:endl; outprintlist(pc); coutendl; break; case 3: pd=Subtractlist(A,B); cout多项式A-B:endl; outprintlist(pd); coutendl; break; case 4: coutx; cout输入x的值后多项式A的值是: ; coutValuelist(A,x); coutendl; break; if(flag=0) break; coutendl; if(flag4) int i=0; coutendl; cout!你输入的操作有错噢!endl; cout-endl; cout *重新输入*-1endl; cout *不重新输入*-0endl; cout-endl; cout 请选择: i; coutendl; if(i=1) g=0; else g=1; coutendl; return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1