《数据结构课程设计》报告一元稀疏多项式计算器_第1页
《数据结构课程设计》报告一元稀疏多项式计算器_第2页
《数据结构课程设计》报告一元稀疏多项式计算器_第3页
《数据结构课程设计》报告一元稀疏多项式计算器_第4页
《数据结构课程设计》报告一元稀疏多项式计算器_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数据结构课程设计报告一元稀疏多项式计算器班级: 软件1408学号:1130505140831姓名: 齐瑞征指导老师: 石锋问题描述设计简单的一个一元稀疏多项式计算器。基本要求一元稀疏多项式简单计算器的基本功能是:(1) 输入并建立多项式,以带头结点的单链表存储;(2) 输出多项式,输出形式为整数序列:n,c1,e1, c2,e2, cn,en,其中n是多项式的项数,ci,ei,分别是第i项的系数和指数,序列按指数降序排序;(3) 多项式a和b相加,建立多项式a+b;(4) 多项式a和b相减,建立多项式a-b;(5) 多项式a和b相乘,建立多项式a*b;数据结构设计在模拟多项式时,为了简化处理

2、,只取最核心的两个数据:多项式的系数和指数,具体数据结构定义如下:typedef struct nodeint xs; /*系数*/int zs;/*指数*/struct node * next; /*next指针*/dnode,* dnodelist;功能函数设计(1)链表初始化函数creat_node()(2)多项式数据的输入函数input()(3)数据的插入函数insert_node()(4)多项式的显示函数output()(6)多项式的运算函数:新建链表存储计算后的多项式多项式相乘mulresult()多项式相加addresult()多项式相减subresult()(7)主函数main

3、()创建两个多项式的链表并且初始化,分别调用相应的多项式创建函数,创建成功后选择运算方式,再将运算结果输出显示。【实现过程】1、在d:根目录下建立文件夹,命名方式为“班级”+“顺序号(两位)+“姓名”,例如你是商务1419班的,你在学生花名册上的顺序号是05号,你的姓名是张有才,则文件夹的名字是“商务141905张有才”。这个文件夹就是你的工作文件夹。2、 在vc中创建c+源程序,命名为“poly.c”,保存在工作文件夹中;3、在poly.c中输入以下内容并编译,使没有语法错误:#include#includetypedef struct nodeint xs;int zs;struct no

4、de * next;dnode,* dnodelist; /*定义结构体*/dnodelist creat_node(void) /*链表初始化*/dnodelist d;d=(dnodelist)malloc(sizeof(dnode);if(d)d-next=null;return d;4、回答问题,以上程序中,creat_node(void)函数的功能是什么?答:创建链表里面的一个节点。5、在poly.c中完成如下函数,并编译。int insert_node(dnodelist d,int xs,int zs) /*插入函数*/dnodelist p;dnodelist q;dnodel

5、ist r;p=d;while(p-next) r=p;p=p-next;if(zs=p-zs) p-xs=p-xs+xs;return 1;else if(zsp-zs) q=creat_node();q-xs=xs;q-zs=zs;r-next=q;q-next=p;return 1;/*while(p-next)*/q=creat_node(); q-xs=xs;q-zs=zs;q-next=p-next;p-next=q;return 1;free(p);free(q);free(r);函数功能:将一项合并到多项式中。参数说明:d:一个带头结点的单链表的头指针,其中按指数降序存放一个一

6、元多项式的数据;xs:要合并的项的系数;zs:要合并的项的指数。6、在poly.c中完成如下函数,并编译。void output(dnodelist d)dnodelist r;r=d-next;printf(%dx%d,r-xs,r-zs);r=r-next;while(r!=null)if(r-xs0)printf(+%dx%d,r-xs,r-zs);elseprintf(%dx%d,r-xs,r-zs);r=r-next;printf(n); 函数功能:以类似“-3*x100+2*x10-10”的形式输出d中存放的多项式数据。7、在poly.c中输入以下函数,并编译。dnodelist

7、input(void) dnodelist d; int xs, zs; d = creat_node(); printf(请输入系数和指数(系数,指数):); scanf(%d,%d, &xs, &zs); while(xs!=0 & zs!=0) insert_node(d, xs, zs); printf(请输入系数和指数(系数,指数):); scanf(%d,%d, &xs, &zs); return d;你认为以上函数的功能是什么?答:从键盘输入系数和指数存放在链表中。8、在poly.c中输入以下main()函数,并编译。void main(void) dnodelist d; d

8、= input(); output(d);9、运行你的程序,输入以下数据:-3,1002,10-10,10,0将你的程序的运行结果的界面粘贴在下面:10、在poly.c中完成以下函数,其功能是计算d1和d2中两个多项式的和,函数返回和多项式。dnodelist addresult(dnodelist d1,dnodelist d2) dnodelist d;dnodelist p,q;int x,z;d=creat_node();p=d1-next;q=d2-next;while(q)x=q-xs;z=q-zs;insert_node(d,x,z);q=q-next;while(p)x=p-x

9、s;z=p-zs;insert_node(d,x,z);p=p-next; return d;11、在poly.c中完成以下两个函数,其功能分别是是计算两个多项式的差和乘积。dnodelist subresult(dnodelist d1, dnodelist d2) dnodelist d;dnodelist p,q;int x,z;d=creat_node();p=d1-next;q=d2-next;while(p&q)if(p-zs)zs)x=-(q-xs); z=q-zs;insert_node(d,x,z);q=q-next;else if(p-zs)(q-zs)x=p-xs;z=p

10、-zs;insert_node(d,x,z);p=p-next;else z=q-zs;x=(p-xs)-(q-xs);insert_node(d,x,z);p=p-next;q=q-next;while(p)x=p-xs;z=p-zs;insert_node(d,x,z);p=p-next;while(q)x=-(q-zs);z=q-zs;insert_node(d,x,z);q=q-next; return d;dnodelist mulresult(dnodelist d1, dnodelist d2)dnodelist d;dnodelist p,q;int x,z;d=creat_n

11、ode();p=d1-next;q=d2-next;while(q)while(p)x=p-xs*q-xs; /*系数相乘,指数相加*/z=p-zs+q-zs;insert_node(d,x,z);p=p-next;p=d1-next;q=q-next;return d;12、 编写main函数,功能输入两个多项式的数据,计算并输出和、差、积多项式,把程序运行结果的界面粘贴在下面。收获和建议1、通过本次课程设计,你都有哪些收获,请写在下面。通过这次课程设计,我感觉到要真正做出一个程序并不很容易,但只要用心去做,总会有收获,特别是当我遇到问题,查资料,问同学,想尽办法去解决,最后终于找到方法时,

12、心里的那份喜悦之情真是难以形容.编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查.直到最终搞清为止。 “享受制作过程 追求更加完美”是我对实训的总结。2、 你对这门课程教学内容和方法有什么好的建议,请写在下面。 通过这次课程设计我觉得我们学习数据结构的方法存在一定的弊端,数据结构的效果直接影响到我们对其它专业课的学习和今后业务的成长。我觉得我们对于数据结构的学习不仅包括理论部分的学习,还要让我们勤动手,多实践。整个实验过程要结合教学进度与我们的实际情况,制定实验的内容。实验分两部分,一是验证性的,主要结合课堂理论教学内容展开,学生可以对在课堂上学到的基本算法进行验证;二是设计性实验,坚持“学以致用”的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论