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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构课程设计一元稀疏多项式计算器.docx

1、数据结构课程设计一元稀疏多项式计算器实习报告:1.5题 一元稀疏多项式计算器题目:设计一个一元稀疏多项式简单计算器班级:计科一班 姓名:康宇 学号:10061014 完成日期:2013.4.15一、需求分析1、一元稀疏多项式简单计算器的功能是:1) 输入并建立多项式;2) 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列; 3) 多项式a和b相加,建立多项式a+b;4) 多项式a和b相减,建立多项式a-b。5) 计算多项式在x处的值;6) 求多项式a、b的导函数; 2、测试数据:1、(2x+5x

2、8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7);2、(6x-3-x+4.4x2-1.2x9+1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x);3、(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5);4、(x+x3)+(-x-x3)=0;5、(x+x100)+(x100+x200)=(x+2x100+x200);6、(x+x2+x3)+0=x+x2+x3.二、概要设计 为实现上述程序功能,应以有序链表来表示多项式的系数和指数。定义线性表的动态分配顺序存储结构;建立多项式存储

3、结构,定义指针*next利用链表实现队列的构造。每次输入一项的系数和指数,可以输出构造的一元多项式演示程序以用户和计算机的对话方式执行,即在计算机终站上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运行命令;最后根据相应的输入数据(滤去输入中的非法字符)建立的多项式以及多项式相加的运行结果在屏幕上显示。 1、元素类型、结点类型和指针类型:typedef struct LNode float xishu; /系数 int zhishu; /指数 struct LNode *next; LNode,*Linklist; 2、建立两个全局链表指针,Linklist List1=NULL;L

4、inklist List2=NULL;用来存放两个多项式,然后在main()函数里调用输入函数。 3、本程序包括7个模块 1)主程序: Void main()While(1)输出菜单;接受命令;处理命令;If(命令=退出)则程序退出;释放链表; 2)输入函数: Void Input() 调用插值函数In(List1)处理链表一; 调用插值函数In(List2)处理链表二;3)输出函数:Void Output()调用输值函数Out(List1)处理链表一;调用输值函数Out(List2)处理链表一; 4)相加函数: Void Add()if(List1节点指数 List2节点指数)输出List1

5、节点;指针后移;else if(List1节点指数 List2节点指数)输出List1节点;指针后移;else if(List1节点指数 List2节点指数)输出List2节点;(系数要取负再输出)指针后移;Else两链表指针都后移; if(链表1到头) 输出链表2剩余的节点; else(即链表二到头) 输出链表1剩余的节点; 6)求值函数: void Calc() 输入x的值; 依次调用链表一的节点,求出单项式的值相加后输出; 7)求导函数: void Daohanshu() 输出多项式一的导函数; 三、详细设计#include #include #include typedef struc

6、t LNode /元素类型 float xishu; int zhishu; struct LNode *next;LNode, *Linklist;Linklist List1=NULL;Linklist List2=NULL;Linklist In(Linklist L)/依次往链尾插 Linklist p; float a; int b; Linklist head=(Linklist)malloc(sizeof(LNode); L=head; head-zhishu=0;/head-zhishu头结点放的是多项式的项数 p=head; p-next=NULL; printf(请输入一个

7、多项式:n); while(scanf(%f %d,&a,&b)&(a|b)/默认多项式是按指数由小到大输入 /printf(%f %dn,a,b); (head-zhishu)+; /printf(%3dn,L-zhishu); Linklist q=(Linklist)malloc(sizeof(LNode); q-xishu=a; q-zhishu=b; if(p-next=NULL) p-next=q; q-next=NULL; p=head; else if(p-next-zhishuzhishu) q-next=p-next; p-next=q; p=head; else p=p-

8、next; printf(您已成功输入一个多项式!n); return L;void Input() List1=In(List1); List2=In(List2);void Out(Linklist L) Linklist p; p=L-next; printf(此多项式有%3d项 ,L-zhishu); while(p!=NULL)/按指数由大到小输出 printf(%0.1f %3d ,p-xishu,p-zhishu); p=p-next; printf(n);void Output() printf(第一个多项式为:n); Out(List1); printf(第二个多项式为:n)

9、; Out(List2);void Add() Linklist p1,p2; p1=List1-next; p2=List2-next; printf(相加后的多项式为:n); while(p1&p2) if(p1-zhishup2-zhishu) printf(%0.1f %3d ,p1-xishu,p1-zhishu); p1=p1-next; else if(p1-zhishuzhishu) printf(%0.1f %3d ,p2-xishu,p2-zhishu); p2=p2-next; else printf(%0.1f %3d ,p1-xishu+p2-xishu,p1-zhi

10、shu); p1=p1-next; p2=p2-next; if(p1=NULL) while(p2) printf(%0.1f %3d ,p2-xishu,p2-zhishu); p2=p2-next; else while(p1) printf(%0.1f %3d ,p1-xishu,p1-zhishu); p1=p1-next; printf(n);void Sub() Linklist p1,p2; p1=List1-next; p2=List2-next; printf(相减后的多项式为:n); while(p1&p2) if(p1-zhishup2-zhishu) printf(%

11、0.1f %3d ,p1-xishu,p1-zhishu); p1=p1-next; else if(p1-zhishuzhishu) printf(%0.1f %3d ,-p2-xishu,p2-zhishu); p2=p2-next; else if(p1-xishu-p2-xishu!=0) printf(%0.1f %3d ,p1-xishu-p2-xishu,p1-zhishu); p1=p1-next; p2=p2-next; if(p1=NULL) while(p2) printf(%0.1f %3d ,-p2-xishu,p2-zhishu); p2=p2-next; else

12、 while(p1) printf(%0.1f %3d ,p1-xishu,p1-zhishu); p1=p1-next; printf(n);void Calc() int x; double sum=0; Linklist p; printf(请输入x的值:); scanf(%d,&x); p=List1-next; while(p) sum+=p-xishu*pow(x,p-zhishu); p=p-next; printf(多项式1在x处的值为:%0.1lf,sum); printf(n);void Daohanshu() Linklist p; p=List1-next; print

13、f(多项式1的导函数为:n); while(p) printf(%0.1f %3d ,p-xishu*p-zhishu,p-zhishu-1); p=p-next; printf(n);int main() int num; while(1) printf(-n); printf(1-输入并建立多项式;n); printf(2-输出其指系数排列;n); printf(3-多项式相加;n); printf(4-多项式相减;n); printf(5-计算多项式在x处的值;n); printf(6-求多项式a的导函数a;n); printf(0-退出n); printf(-n); printf(请输

14、入您要选择的功能:); scanf(%d,&num); switch(num) case 1:Input();break;/输入函数 case 2:Output();break;/输出函数 case 3:Add();break;/函数相加 case 4:Sub();break;/函数相减 case 5:Calc();break;/计算函数在x处的值 case 6:Daohanshu();break;/求函数的导函数 case 0:exit(1); default :printf(输入错误,请重新输入!); free(List1); free(List2); return 0;四、调试分析1.由

15、于链表是设置成为全局变量,所以任意函数都可以修改它,存在一定风险性。但这也为后来的函数方便了,所有的函数统一没有参数。2.刚开始时曾忽略了一些变量的类型以及没有考虑到指针的返回问题,使调试程序浪费了一定的时间。今后应重视确定参数的变量和赋值属性的区分和标识。3.本程序模块简洁,在main()函数里得到充分体现;4.链表默认用户输入是按指数从小到大的顺序输入的,而默认输出时按指数从大到小;输入时,依次把节点插在链表的末端。五、用户手册 1.本程序运行环境为Windows操作系统,执行文件为:std.exe 2.进入演示程序后显示的界面:六、测试结果中南民族大学数据结构课程设计报告姓 名: 康宇 年 级: 2010 学 号: 10061014 专 业:计算机科学与技术指导老师: 宋中山 2013年4月15日欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求

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

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