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

下载本文档

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

文档简介

数据结构课程设计报告数据结构课程设计报告 一元稀疏多项式计算器一元稀疏多项式计算器 问题描述问题描述 设计简单的一个一元稀疏多项式计算器。 基本要求基本要求 一元稀疏多项式简单计算器的基本功能是: (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; 数据结构设计数据结构设计 在模拟多项式时,为了简化处理,只取最核心的两个数据:多项式的系数和 指数,具体数据结构定义如下: typedef struct node int 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() 创建两个多项式的链表并且初始化,分别调用相应的多项式创建函数,创建 成功后选择运算方式,再将运算结果输出显示。 【实现过程】【实现过程】 1、在 D:根目录下建立文件夹,命名方式为“班级”+“顺序号(两位)+“姓名” , 例如你是商务 1419 班的,你在学生花名册上的顺序号是 05 号, 你的姓名是张有 才,则文件夹的名 字是“商务 141905 张有才” 。这个文件夹就是你的工作文件夹。 2、在 VC 中创建 c+源程序,命名为“poly.c”,保存在工作文件夹中; 3、在 poly.c 中输入以下内容并编译,使没有语法错误: #include #include typedef struct node int xs; int zs; struct node * 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; Dnodelist 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:一个带头结点的单链表的头指针,其中按指数降序存放一个一元多项式的数 据; 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); else printf(%dx%d,r-xs,r-zs); r=r-next; printf(n); 函数功能:以类似“-3*x100+2*x10-10”的形式输出 D 中存放的多项式数据。 7、在 poly.c 中输入以下函数,并编译。 Dnodelist input(void) Dnodelist D; int xs, zs; D = Creat_node(); printf(请输入系数和指数(系数,指数):); scanf(%d,%d, while(xs!=0 printf(请输入系数和指数(系数,指数):); scanf(%d,%d, return D; 你认为以上函数的功能是什么? 答:从键盘输入系数和指数存放在链表中。 8、在 poly.c 中输入以下 main()函数,并编译。 void main(void) Dnodelist D; D = input(); output(D); 9、运行你的程序,输入以下数据: -3,100 2,10 -10,1 0,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-xs; 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 z=q-zs; Insert_node(D,x,z); q=q-next; else if(p-zs)(q-zs) x=p-xs; z=p-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_node(); 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、通过本次课程设计,你都有哪些收获,请写在下面。 通过这次课程设计,我感觉到要真正做出一个程序并不很容易,但只要用心 去做,总会有收获,特别是当我遇到问题,查资料,问同学,想尽办法去解决,最 后终于找到方法时,心里的那份喜悦之情真是难以形容 .编写程序中遇到问题再 所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推 敲,逐个排查.直到最终搞清为止。 “享受制作过程 追求更加完美”是我对实训的总结。 2、你对这门课程教学内容和方法有什么好的建议,请写在下面。 通过这次课程设计我觉得我们学习 数据结构 的方法存在一定的弊端, 数 据结构 的效果直接影响到我们对其它专业课的学习和今后业务的成长。我觉得 我们对于数据结构的学习不仅包括理论部分的学习,还要让我们勤动手,多 实践。整个实验过程要结合教学进度与我们的实际情况,制定实验的内容。实 验分两部分,一是验证性的,主要结合课堂理论教学内容展开,学生可以对在课 堂上学到的基本算法进行验证;二是设计性实验,坚持“学以致用”的

温馨提示

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

评论

0/150

提交评论