数据结构课程设计-一元多项式的四则运算

上传人:aa****6 文档编号:29992917 上传时间:2018-01-26 格式:DOC 页数:32 大小:235.50KB
返回 下载 相关 举报
数据结构课程设计-一元多项式的四则运算_第1页
第1页 / 共32页
数据结构课程设计-一元多项式的四则运算_第2页
第2页 / 共32页
数据结构课程设计-一元多项式的四则运算_第3页
第3页 / 共32页
数据结构课程设计-一元多项式的四则运算_第4页
第4页 / 共32页
数据结构课程设计-一元多项式的四则运算_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数据结构课程设计-一元多项式的四则运算》由会员分享,可在线阅读,更多相关《数据结构课程设计-一元多项式的四则运算(32页珍藏版)》请在金锄头文库上搜索。

1、 一元多项式的四则运算 第页 共 32 页 一元多项式的四则运算 学生姓名: 指导老师: 摘 要 本课程设计主要解决一元多项式的运算问题,通过链表的使用,实现对一元多项式的构建、录入、存储、打印、以及之间的运算。在本课程设计中,程序设计语言为C+语言,程序运行平台为 Windows/98/2000/XP,程序采用了链表存储方法以及结构化和模块化的设计方法,通过调试运行,可以进行多项式的加、减、乘运算,勉强实现了设计目标,并且经过适当完善后,将可应用到实际中解决某些问题。关键词 程序设计; C+ ;一元多项式;运算 一元多项式的四则运算 第页 共 32 页 1 引 言一般来说,我们只知道数学上的

2、一元多项式的运算,这一般都是用笔来进行运算的,然而此课程设计将一元多项式的运算用电脑来进行,只需要将多项式输入,然后就可以出结果,速度快,省去了认为计算的环节,在现实中带来不少方便。1.1 课题背景一元多项式的运算,虽然无法直接在除数学外的其他领域作出贡献,但是在数学上,它可以为人们解决一些自己动笔动手很难解决的问题,比如说那些很长很长的多项式,用笔算可能要算半天,但是用该程序,只需短短的几秒钟,所以它给人们带来了不少方便,同时相信它也能间接地为其他领域做出贡献。1.2 课程设计目的个人觉得,该数据结构课程设计一方面可以让自己更加熟悉那些些常用的数据结构,掌握数据结构内在的逻辑关系,以及它们在

3、计算机中的存储表示,和对它们实行的各种运算;另一方面,可以让自己对于整体和局部,以及结构化和模块化编程有一个更深层次的了解。作为网络工程的学生,虽然之前有过一次语言课程设计,但是深知自己编程能力尚为欠缺,所以这一次数据结构课程设计是对我的编程能力和组织能力的又一次考验。1.3 课程设计内容本课程设计是用链表实现一元多项式的存储及运算,其中包括多项式系数及指数的录入(即一元多项式的录入) ,以及储存、一元多项式的显示、一元多项式之间的加、减、乘法运算。 一元多项式的四则运算 第页 共 32 页 2 设计思路与方案2.1 设计思路该系统使用+语言进行开发和实现,程序中的各个功能分别由不同的的函数实

4、现,然后在 main 函数中调用实现。其设计思路基于结构化的程序设计和链表的存储等,应用了高级语言程序设计中的基本控制结构,如循环和选择等。2.2 设计方案 先定义链表类型结点和一元多项式,然后申明个功能函数并分别编写这些功能函数的算法,然后定义一个菜单函数 Menu(),最后在 main()函数中分别调用这些函数,其中输入的数据则由链表进行储存。其系统结构图如图 2-1 所示:图 2-1 一元多项式的四则运算一元多项式相乘 一元多项式输出 一元多项式销毁退出一元多项式创建一元多项式相加一元多项式的四则运算一元多项式相减 一元多项式的四则运算 第页 共 32 页 3 详细实现3.1 一元多项式

5、创建操作流程图如下图所示:NY图 3-1 一元多项式的创建流程图开始创建一个含 n 个链表类型结点的项分别输入各项的系数和指数判断是否系数不为 0 且指数大于 0重新输入一元多项式创建成功 一元多项式的四则运算 第页 共 32 页 3.2 一元多项式相加先判断多项式的系数与项数之间大小关系,流程图如下所示:YNYNYN NN图 3-2 一元多项式相加流程图开始运算时系数想加删除该项判断所输入的多项式系数是否为 0判断输入的两个多项式指数是否相等输入的第 1 个多项式为 B判断输入的多项式 1,2指数是否 e1e2输入的第 2 个多项式为 B进行运算 一元多项式的四则运算 第页 共 32 页 3

6、.3 一元多项式相减相减即取第二个的相反数,然后进行加法运算,操作流程图如下图所示:图 3-3 一元多项式相减流程图3.4 一元多项式相乘操作流程图如下图所示:图 3-4 一元多项式相乘流程图开始调用多项式加法函数进行运算将多项式 B 进行复制取多项式 B 的相反数开始给出运算的两个多项式按系数相乘指数相加进行运算将运算的结果相加并输出 一元多项式的四则运算 第页 共 32 页 3.5 一元多项式输出先判断录入的两个多项式是否有空项,如果两个多项式都不是空的,那么顺序输出多项式 A 和多项式 B,否则多项式创建不成功,提示重新输入。操作流程图如下图所示:YN图 3-5 一元多项式输出流程图3.

7、6 一元多项式销毁先判断存储多项式的链表类型结点是否都不为空结点,若有空结点,则提示重新选择,否则,按顺序销毁多项式 A,B。操作流程图如下图所示:NY输出多项式 B输出多项式 A开始判断所输入的两个多项式是否有空的多项式创建有误,重新输入销毁存储多项式 B 的结点销毁存储多项式 A 的结点开始判断存储多项式的链表类型结点是否都不为空多项式不存在,重新选择 一元多项式的四则运算 第页 共 32 页 图 3-6 一元多项式销毁流程图3.7 退出本过程较为简单,用 exit(0)强制终止程序,返回状态码 0 表示正常结束。其操作流程图如下图所示:图 3-6 一元多项式退出流程图开始强制终止程序提示

8、退出 一元多项式的四则运算 第页 共 32 页 4 运行环境与结果4.1 运行环境在本课程设计中,系统开发平台为 WindowsXP,程序设计语言为 C+,程序的运行环境为 Visual C+ 6.0。4.2 运行结果(1)在程序开始运行时,会出现一个编号 1-7 的菜单并提示选择,如下图所示:图 4-1 最初运行界面 一元多项式的四则运算 第页 共 32 页 (2)选择 1,创建两个一元多项式,按顺序操作,录入两个一元多项式,结果如下图所示:图 4-2 一元多项式创建(3)选择 2,将两个一元多项式相加,操作后结果如下图所示: 一元多项式的四则运算 第页 共 32 页 图 4-3 一元多项式

9、相加(4)选择 3 将两个一元多项式相减,操作后结果如下图所示:图 4-4 一元多项式相减 一元多项式的四则运算 第页 共 32 页 (5) 选择 4 将两个一元多项式相乘,操作后结果如下图所示:图 4-5 一元多项式相乘(6)选择 5 显示两个一元多项式,操作后结果如下图所示: 一元多项式的四则运算 第页 共 32 页 图 4-6 一元多项式输出(7)选择 6,销毁所创建的两个多项式,操作后结果如下图所示:图 4-7 一元多项式销毁 一元多项式的四则运算 第页 共 32 页 (8)选择 7,退出程序,操作后结果如下图所示:图 4-8 退出程序5 结束语由于课程设计只有短短的两周时间,再加上原

10、本自己编程能力并非突出,所以连这个简单的一元多项式的四则运算都令我大伤脑筋,尽管这样,还是没能完善,虽然我到处查资料,试图改写除法算法,也曾自己仿写一个除法的算法,不过都没能成功,所以说到四则运算,其实,我还只能算勉勉强强完成了三则运算,不过虽说这样,我也从中学到不少东西,我深刻认识到编程中结构化和模块化的重要性,当然也注意到很多细节问题是平时编小程序时经常疏忽的,如局部变量,外部变量等的定义与使用。虽然这次课程设计并非做的好,但我知道这也只不过是另一次尝试,一次考验。而且通过这次课程设计,我深知在做一件比较专业的事情的时候,没有其专业知识时绝对不可能把它做好的,也许并非这个一元多项式的四则运

11、算难,而是自己的编程知识缺乏了点,所以一直在想我该先做什么,后来,我就去查阅了一些资料,就把目标锁定在要实现的功能上, 一元多项式的四则运算 第页 共 32 页 从简单到容易,所以就构思了一下整体结构,然后开始找资料,写程序。但不管怎样,我受益还是颇多的,起码让我认识到自身编程知识还是有些欠缺的,所以我以后会踏踏实实的走好每一步。参考文献1 苏运霖 数据结构与算法 中南工业大学出版社 , 20022 Shaffer 数据结构与算法分析(C+版) 电子工业出版社 , 19993严蔚敏,吴伟民 数据结构(C 语言版)清华大学出版社,20054清华大学数据结构(C 语言)讲义.道客巴巴,http:/

12、 一元多项式的四则运算 第页 共 32 页 附录:源程序代码/ 程序功能:一元多项式的四则运算/ 程序作者:阳超/ 最后修改日期:2011-03-02#include/标准输入输出流#include/使程序中可用键盘输入函数#include/使程序中可用系统标准输出函数using namespace std;/命名空间 std 内定义的所有标识符均有效struct Nodefloat coef;/结点类型,系数int exp;/指数; 一元多项式的四则运算 第页 共 32 页 typedef Node polynomial;struct LNodepolynomial data;/链表类型LN

13、ode *next;typedef LNode* Link;/*申明各功能函数*/ void CreateLink(Link void PrintList(Link L);void PolyAdd(Link void PolySubstract(Link void CopyLink(Link void PolyMultiply(Link int JudgeIfExpSame(Link pa,Link e);void DestroyLink(Link int CompareIfNum(int i);/*销毁链表类型结点*/void DestroyLink(Link &L)/Link p;p=L-

14、next;while(p) L-next=p-next;delete p;p=L-next;delete L; 一元多项式的四则运算 第页 共 32 页 L=NULL;/*创建含有 n 个链表类型结点的项,即创建一个 n 项多项式*/void CreateLink(Link &L,int n)if(L!=NULL)DestroyLink(L);Link p,newp;L=new LNode;L-next=NULL;(L-data).exp=-1;/创建头结点p=L;for(int i=1;i(newp-data).coef;cout(newp-data).exp;if(newp-data.expnext=NULL;p=L;if(newp-data.coef=0)coutnext!=NULL)&(p-next-data).expdata).exp) p=p-next; /p 指向指数最小的那一个if(!JudgeIfExpSame( L, newp)newp-next=p-next;p-next=newp;else coutnext;while(p

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号