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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构多项式相加实验报告.docx

1、数据结构多项式相加实验报告数据结构多项式相加实验报告篇一:数据结构实验多项式加法数据结构实验报告实验名称:多项式加减法学号:1XX10419姓名:林强实验日期: 一、实验目的 通过实现多项式的加减法,对链表有更深入的了解 二、实验具体内容 1、实验题目1:(1)题目设计一个一元稀疏多项式简单的加减法计算器实现要求:一元稀疏多项式简单计算器的基本功能是:(1)输入并建立多项式:A(x)?7?3x?9x8?5x17;B(x)?8x?22x7?9x8(2)输出多项式(3)多项式A和B相加,建立多项式CAB,并输出相加的结果多项式C(4)选作:多项式A和B相减,建立多项式CAB,并输出相加的结果多项式

2、D(2)分析1:本程序的任务是实现两个多项式的加法其中多项式的系数为浮点型,指数为整数,输出的结果也为系数和指数。(1)输入的形式和输入值的范围:输入多项式的系数a和未知数X的指数b,当a和b都为零时,输入结束。输入值的范围:a为实数,b为整数。(2)输出形式:输出多项式的系数和多项式未知数X的指数即(a,b)形式。(3)程序所能达到的功能,实现两个多项式的加法,并输出最后的结果2:整个程序运行期间实行动态创建节点,一边输入数据,一边创建节点当将全部数据输入到单链表中后再调用多项式加法这个函数,并一边实现多项式的相加,一边释放节点,有效防止了在程序反复运行过程中可能出现系统空间不够分配的现象

3、(3)实验代码 typedef int Status; #define OVERFLOW -1#define null 0 typedef struct Lnode float coef; / 存储项系数 int expn;/ 存储项指数 struct Lnode *next; Lnode,*LinkList; typedef LinkList polynomial; Status InitList_L(LinkList &L) / 初始化头节点 L=(LinkList)malloc(sizeof(Lnode); if(!L) return(-1); L-next=null; return 1

4、; void AddPolyn(polynomial pa, polynomial pb) /实现两个多项式相加的算法float x;polynomial qa;polynomial qb;polynomial s;polynomial u; qa=pa-next; qb=pb-next; s=pa; while(qa&qb) if(qa-expnexpn) s=qa;qa=qa-next; else if(qa-expn=qb-expn) x=qa-coef+qb-coef; if(x!=0) qa-coef=x; s=qa; qa=qa-next;u=qb; qb=qb-next; fre

5、e(u); else s-next=qa-next; free(qa);qa=s-next;u=qb;qb=qb-next;free(u); else if(qa-expnqb-expn) u=qb-next; s-next=qb; s=qb;qb-next=qa;qb=u;if(qb)qa-next=qb;free(pb);void main()float a;int b;polynomial L1; polynomial L2; LinkList q;LinkList p;LinkList m;LinkList n;InitList_L(L1);q=L1;InitList_L(L2);p=

6、L2;cout请输入数据:for(;)cina;cinb;if(a=0&b=0)break;m=new Lnode;m-coef=a;m-expn=b;q-next=m;q=m;q-next=null;/循环输入第一个多项式的系数与指数for(;)cina;cinb;if(a=0&b=0)break;n=new Lnode;n-coef=a;n-expn=b;p-next=n;p=n;p-next=null;/ 循环输入第二个多项式的系数与指数 AddPolyn(L1,L2);/调用多项式相加的算法while(L1-next)!=null)coutnext-coefnext-expnL1=L1

7、-next; / 输出计算结果 三、实验小结通过编写多项加法这个程序,我将自己所学到的创建链表,初始化链表和多项式加法算法都应用了一次,这使我们不仅仅只 是理论化的学习书本上的知识,而是将学习到的理论知识应用到 实际的操作中来增强我们的实际操作能力,这使我增加了实际操 作经验,也使我通过实际操作来认识到自己在程序编写上的不足 从而增强了我的实际编写程序的能力。篇二:数据结构实验报告一、多项式及其运用中南大学物理学院 数据结构实验报告- - - - 一元多项式相加及其运用 专业班级 时间:XX年10月18日 数据结构实验报告-一元多项式相加及其运用【问题描述】设计一个一元稀疏多项式简单计算器【基

8、本要求】一元稀疏多项式简单计算器的功能是:(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,?cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;(3)多项式a和b相加,建立多项式a+b;(4)多项式a和b相减,建立多项式a-b。【运用拓展】(1)计算多项式在x处的值;(2)多项式a和b相乘,建立乘积多项式ab;(3)计算器的仿真友好界面。【设计思路分析】(1)解决多项式相加,必须要有多项式,所以必须首先建立两个多项式,在这里采用链表的方式存储链表。(2)运用尾插法建立两条单链表,以单链表polyn p和polyn

9、h分别表示两个一元多项式a和b,a+b的求和运算等同于单链表的插入问题(3)设p、q分别指向单链表polya和polyb的当前项,比较p、q结点的指数项,由此得到下列运算规则: 若p-expnexpn,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。 若p-expn=q-expn,则将两个结点中的系数相加,当和不为0时修改结点p的系数。 若p-expnq-expn,则结点q所指的结点应是“和多项式”中的一项,将结点q插入在结点p之前,且令指针q在原来的链表上后移。【 测试数据】多项式a:6x+3x5-7.1x11多项式b: 2-5x5+11x9若计算a+b则有:(6x+3x5-7.1

10、x11)+(2-5x5+11x9)=(-7.1x11+11x9-2x5+6x+2)等。【操作界面显示】1:建立多项式的操作:2:输出多项式及计算x的值3:进行运算操作:4:结束程序:【程序代码】#include /调用输入输出函数#includetypedef struct Polynomial /定义一个Polyn结构体float coef;int exp; /系数指定为浮点型,指数指定为整型struct Polynomial *next;*Polyn,Polynomial;void Insert(Polyn p,Polyn h) /查找位置插入新链节if(p-coef=0) free(p)

11、;/p系数为0的话释放结点else /否则查找插入位置Polyn q1,q2;q1=h; q2=h-next;while(q2& p-exp exp) /指数较大则插前面q1=q2; q2=q2-next; if(q2& p-exp = q2-exp) /将指数相同相合并 q2-coef += p-coef;free(p);if(!q2-coef) /系数为0的话释放结点q1-next=q2-next;free(q2);else p-next=q2; q1-next=p; /指数为新时将结点插入/第一个else /void InsertPolyn CreatePolyn(Polyn head,

12、int m) /建立一个头指针为head、项数为m的一元多项式int i;Polyn p;p=head=(Polyn)malloc(sizeof(struct Polynomial); /开辟多项式地址空间head-next=NULL; /指定表尾,然后采用尾插法输入多项式for(i=0;ip=(Polyn)malloc(sizeof(struct Polynomial); /建立新结点以接收数据printf(请输入第%d项的系数与指数:,i+1);scanf(%f %d,&p-coef,&p-exp);Insert(p,head); /调用Insert函数插入结点return head;vo

13、id PrintPolyn(Polyn P)/输出多项式 Polyn q=P-next;int flag=1;/项数计数器if(!q)/若多项式为空,输出0篇三:一元多项式相加的实验报告数据结构实验报告 1、实验名称:实现一元多项式的加法 2、实验日期: XX-3-73、基本要求:1)编程实现一元多项式的加法;2)设计一个测试主函数。4、实验目的:通过实验使学生掌握链表的最基本和最主要的操作:插入和删除操作。5、测试数据:随意输入两个一元多项式的系数和指数:第一个:系数:4 8 6 7;指数:23 4 5第二个:系数:5 9 3 8;指数:13 5 6两式相加后输出结果。6、算法思想或算法步骤

14、:1) 用尾插入法创建单链表(PLoy *create_Ploy_LinkList(void))2)输出单链表中所有结点的值,得到一元多项式(void output_Ploy_LinkList(PLoy *L, char ch))3)进行多项式的相加,采用链式存储表示加法,根据结点类型定义,若指数不同,则进行链表的合并;若指数相同,则进行系数相加;若和为0,则去掉结点;若和不为0,则修改结点的系数域。(PLoy *add_ploy(PLoy *La, PLoy *Lb)) 7、模块划分: 1)头文件stdiob.h。头文件stdiob.h中包括:结点结构体定义、一元多项式的系数和指数的输入、一

15、元多项式的输出以及两式相加输出结果的操作等;2)实现文件yydxsxj.cpp。包含主函数int main(),其功能是测试所设计的一元多项式加法的正确性。8、数据结构:链表中的结点的结构体定义如下:typedef struct Nodefloat coef;/*系数部分*/int expn;/*指数部分*/struct Node *next ; PloyNode;9、源程序:源程序存放在两个文件中,即头文件stdiob.h和实现文件yydxsxj.cpp。/头文件stdiob.htypedef struct Nodefloat coef;/*系数部分*/int expn;/*指数部分*/st

16、ruct Node *next ; PloyNode;PloyNode *create_Ploy_LinkList(void)/* 尾插入法创建单链表,链表的头结点head作为返回值 */ float coef ; int expn ;PloyNode *head, *p, *q;head=p=(PloyNode *)malloc(sizeof(PloyNode);p-next=NULL; /* 创建单链表的表头结点head */while (1)printf(n请输入一元多项式的系数(0表示结束): ) ;scanf(%f,&coef);if (coef=0) break ;elseprin

17、tf(n请输入一元多项式的指数: ) ; scanf(%d,&expn);q=(PloyNode *)malloc(sizeof(PloyNode); q-coef=coef ; /* 指数部分赋值 */ q-expn=expn ; /* 系数部分赋值 */ q-next=p-next; p-next=q; p=q ;/* 钩链,新创建的结点总是作为最后一个结点 */ return(head); void output_Ploy_LinkList(PloyNode *L, char ch) /* 输出以L为头结点的单链表中所有结点的值 */ PloyNode *p;p=L-next; /* 使

18、p指向第一个结点 */if (p=NULL) printf(n此多项式为空!nn) ; elseprintf(f(x)= n,ch) ;while (p!=NULL)if (p-coef0)printf(%+g,p-coef) ;else printf(%g,p-coef) ;if (p-expn!=0)printf(X) ;printf(%d,p-expn);p=p-next; /* 移动指针p*/printf(nn) ;PloyNode *add_Ploy(PloyNode *La, PloyNode *Lb)PloyNode *Lc , *pc , *pa , *pb ,*ptr ;float x ; Lc=pc=La ; pa=La-next ; pb=Lb-next ;if(pa=NULL&pb=NULL)printf(两个式子之和也为空项); while (pa!=NULL&pb!=NULL)if (pa-expnexpn)

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2