




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与工程学院计算机科学与工程学院数据结构与算法实验报告专业班级实验地点机423学生学号指导教师学生姓名实验时间实验项目链表的应用实验类别操作性( )验证性( )设计性( )综合性( )其它( )实验目的及要求(1)熟练掌握链表结构及有关算法的设计;(2)掌握用链表表示特定形式的数据的方法,并能编写出有关运算的算法。成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律认真完成实验任务30分报告质量程序代码规范、功能正确填写内容完整、体现收获70分说明: 评阅教师: 日 期: 年 月 日一 实验内容一元多项式求和:把任意给定的两个一元多项式P(x),Q(x)输入计算机,计算它们的和并输出计算结果。二、实验说明一元多项式可以用单链表表示,结点结构图示如下: 一元多项式链表的结点结构coef exp next一元多项式算法伪代码如下:1. 工作指针p、q初始化;2. while(p存在且q存在)执行下列三种情形之一 2.1 如果p-expexp,则指针p后移; 2.2 如果p-expq-exp,则 2.2.1 将结点q插入到结点p之前; 2.2.2 指针q指向原指结点的下一个结点; 2.3 如果p-exp=q-exp,则 2.3.1 p-coef =p-coef+q-coef; 2.3.2 如果p-coef =0,则执行下列操作,否则,指针p后移; 2.3.2.1 删除结点p; 2.3.2.2 使指针p指向它原指结点的下一个结点; 2.3.3 删除结点q; 2.3.4 使指针q指向它原指结点的下一个结点; 3. 如果q不为空,将结点q链接在第一个单链表的后面;三、 设计分析(实验流程)实现要定义的一元多项式应采用链式存储结构。根据一元多项式相加的运算法则,对于两个多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成新多项式的一项;对于两个多项式中所有指数不同的项,分别复制到新多项式中。新多项式不必另外生成,而是在原来的两个多项式中摘取结点即可。采用顺序存储结构存储多项式系数A,使多项式的某些运算变得更简洁。但在实际使用时,多项式的阶数可能很高,不同的多项式阶数可能相差很大,这使顺序存储结构的最大长度难以确定。而且,最高次幂与最低次幂项之间缺项很多时,采用顺序存储结构显然十分浪费存储空间,因此,一般情况下多采用链式存储结构来存储高阶多项式。在用线性链表来存储一个多项式时,多项式中的每个非零项系数对应一个结点,结点由数据元素项和指针组成。数据元素项中包含系数和指数值, 设计中先定义定义数据元素中的数据,其中有指数、系数级指针next等。并要先构造一元多项式。在定义输出、删除、合并等模块。假设指针qa和qb分别指向多项式A和B中当前进行操作的某个结点,比较这个结点的指数项,可能有三种情况: 指针qa-expexp,则摘取qa指针所指结点插入到和多项式中; 指针qa-expexp,则摘取qb指针所指结点插入到和多项式中; 指针qa-exp=qb-exp,则将系数相加,若和数不为零,则修改qa-coef的值,同时释放qb所指结点,反之,从多项式A的链表中删除相应的结点,并释放指针Pa和Pb所指结点;还有就是在输入是采取的降序输入,也好使两个多项式进行合并。并输出。在主函数中将前面也的这些功能都运用起来就可以了。四、源程序代码#include#define NULL 0using namespace std;typedef struct Polynomial float coef; /系数 int exp; /指数struct Polynomial *next;Polynomial;Polynomial *CreatPolyn() /输入m项的系数和指数,建立一元多项式float mod; int ind; Polynomial *H,*p,*s; H=new Polynomial; s=H; cout请输入多项式的系数和指数:(按0结束输入)modind;while(mod) p=(Polynomial *)new Polynomial;p-coef=mod;p-exp=ind;s-next=p;s=p;cinmodind;s-next=NULL;return H;void Print(Polynomial *pa) /打印输出一元多项式pwhile(pa-next!=NULL) pa=pa-next; coutcoef*xexp; if(pa-next!=NULL&pa-next-coef0)coutnext;while(p)q=p;p=p-next;delete q;pa-next=NULL;void AddPolyn(Polynomial *pa,Polynomial *pb) /用于链表的合并使用完成多项式的相加运算float sum;Polynomial *p,*q,*pre,*temp;p=pa-next;q=pb-next;pre=pa; while(p!=NULL&q!=NULL)if(p-expq-exp) pre-next=p; pre=pre-next; p=p-next; else if(p-exp=q-exp) sum=p-coef+q-coef; if(sum!=0) p-coef=sum; pre-next=p;pre=pre-next;p=p-next; temp=q;q=q-next;delete temp; else temp=p-next;delete p; p=temp; temp=q-next;delete q; q=temp; else pre-next=q; pre=pre-next; q=q-next; if(p!=NULL) /将多项式A中剩余的结点加入到和多项式中 pre-next=p; else pre-next=q; int main()int c;int t=1;while(t)cout*菜单*endlendl;cout1.创建并显示一元多项式A和B,计算一元多项式A加B并显示和endlendl;cout2.退出程序.c;switch(c)case 1:Polynomial *p1,*p2;p1=CreatPolyn();cout一元多项式A是: ;Print(p1);coutendl;p2=CreatPolyn();cout一元多项式B是: ;Print(p2);coutendl;AddPolyn(p1,p2);cout一元多项式A加B的和是: ;Print(p1);coutendl;Delete(p1);break;case 2:t=0;break;system(pause);return 0; 五、实验结果六、实验总结这次实验做了好久。刚开始都不知道怎么去下手,首先是把题目的意思理解错了,本来是一元多项式以为是多元多项式,也不太知道怎么去表达那个次数。后来才知道是自己理解错了。后来想想就用之前在课程设计中用的思路去做。在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生外出旅游安全协议书5篇
- 新解读《GB-T 32622-2016社会保险征缴稽核业务规范》
- 2025防盗门工程承包合同2篇
- 高级房屋售卖合同范本
- 赠予车位合同范本
- 河南高层工程施工方案
- 简易办公租房合同范本
- 石材购销合同范本
- 的消防合同范本
- 承建喷泉工程合同范本
- 海天注塑机全参数DOC资料全
- Test Plan Template:测试计划模板
- (完整版)三年级下册数学开学第一课ppt
- 苏教版四年级科学上册全册课件
- JJF1101-2019环境试验设备温度、湿度校准规范-(高清现行)
- 人教版新教材高中物理实验汇总及答案详解
- 中班语言《大狮子和小老鼠》课件
- TSG11-2020 锅炉安全技术规程
- 资助业务工作培训
- 《足球运动发展史》PPT课件
- IPQAM调制器操作说明书(共36页)
评论
0/150
提交评论