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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构线性表的应用实验报告Word文档下载推荐.docx

1、7) 多项式相乘:编写一个函数,求两个多项式的乘积多项式。3. 算法说明:1) 多项式的建立、显示和相加算法见讲义。可修改显示函数,使输出的多项式更符合表达规范。2) 多项式减法:同次项的系数相减(缺项的系数是0)。例如a(x)=-5x2+2x+3,b(x)= -4x3+3x,则a(x)-b(x) =4x3-5x2-x+3。提示:a(x)-b(x) = a(x)+(-b(x)。3) 多项式乘法:两个多项式的相乘是“系数相乘,指数相加”。算法思想是用一个多项式中的各项分别与另一个多项式相乘,形成多个多项式,再将它们累加在一起。例如,a(x)=-5x2+2x+3,b(x)=-4x3+3x,则a(x

2、)*b(x) = (-4x3)*(-5x2+2x+3)+(3x)*(-5x2+2x+3) = (20x5-8x4-12x3) + (-15x3+6x2+9x) = 20x5-8x4-27x3+6x2+9x。4. 实验步骤:根据实验报告的要求,我对文件夹里的C文件进行了丰富和修改,步骤如下:链表结构建立多项式:typedef struct polynode float coef; /系数 int exp; /指数 struct polynode *next; /下一结点指针 PNode; 编写函数,实现多项式的加法运算;PNode * PolyAdd (PNode *f1, PNode *f2)

3、 /实现加法功能。 /实现两多项式(头指针分别为f1和f2)相加,返回和多项式f3=f1+f2。 PNode *pa=f1-next,*pb=f2-next,*pc,*f3,*q; float coef; f3=(PNode *)malloc(sizeof(PNode); /建立头指针 f3-exp=-1; /对头指针初始化next=f3; pc=f3; /将pc指向头指针 while (pa-exp!=-1 | pb-=-1) / 返回头指针时,跳出循环 if (pa-exppb-exp) exp=pa-exp; coef=pa-coef; pa=pa-next; else if (pa-e

4、xp coef=pb- pb=pb- else coef+pb- if (coef!=0) q=(PNode *)malloc(sizeof(PNode); /建立新的q指针存放负指数的指针 q-exp=exp;coef=coef; /将q插入链表中next=pc- pc-next=q; pc=q; return f3; /返回实现多项式的显示;void ShowPloy(PNode *h) /用if语句判断,当指数为0是,只输出系数;当指数为1时,输出系数和X;当系数为1时,输出X和指数。 h=paixu(h); /整理函数,使之降幂排列 PNode *p=h- if(p=h) printf

5、(表达式为空n); return; if(p-coef=1) x%d,p-exp); /用if语句判断,若输出xo和x1值为0和1 直接输出数据。 else if(p-exp=1) %gx, p-coef);exp=0) %g else %gx%dcoef, p- p=p- while (p!=h) if(p-coef0) printf(+ /系数为负,不用输出加号 else if(p- else p=p- printf(n主函数void main() PNode *F1,*F2,*F3; float x; F1=CreatPoly(); F2=CreatPoly();nf1(x)=ShowP

6、loy(F1);nf2(x)=ShowPloy(F2); F3=PolyAdd(F1,F2); F3=paixu(F3);nf1+f2=: ShowPloy(F3); F3=PolySub(F1,F2);nf1-f2=: F3=PolyMult(F1,F2);nf1*f2=:nx的值为: scanf(%f, &x);nf1(x=%.3f)=%.3fn,x,PolyValue(F1,x);多项式求值double PolyValue(PNode *h, float x) /编写算法,求以h为头指针的多项式在x点的值并返回该值。 double f=0.0; /求出f=f(x); PNode *pa;

7、 pa=h- while(pa-=-1) /使用f+=coef*pow,返回f f+=(pa-coef)*pow(x,pa- pa=pa- return f;多项式相减PNode * PolySub(PNode *f1,PNode *f2)/编写此算法,实现两多项式(头指针分别为f1和f2)相减,返回差多项式f3=f1-f2。next,*pc,*f3,*q,*head; /头指针的初始化 /pc指向头指针,便于操作。 while(pb-=-1) /返回头指针时,跳出循环。 q=(PNode *)malloc(sizeof(PNode); q-coef=pb-coef*(-1);exp=pb-

8、pc- pc=q; pb=pb- head=PolyAdd(f1,f3); /调用加法函数做减法 return head; /返回头指针多项式相乘PNode * PolyMult(PNode *f1,PNode *f2)/实现两多项式(头指针分别为f1和f2)相乘,返回乘积多项式f3=f1*f2。next,*pc,*u,*head; head=(PNode *)malloc(sizeof(PNode); head-next=head; pc=head;=-1) /多项式相乘,录入u指针,查到头指针。 while(pb-=-1) coef=pa-coef*pb- exp=pa-exp+pb- u

9、=(PNode *)malloc(sizeof(PNode); u-next=u; pc=u;程序运行截图测试成功!程序完整源代码如下:#include stdlib.hmath.hPNode * paixu(PNode *f) /将多项式降幂排列 PNode *p,*q,*r,*p0,*q0; p=f- q=p- p0=f; q0=p; while(p-=-1) /p为q的前驱,q与p指数指数值进行比较, while(q-=-1) /q为头指针推出循环,q移动一圈 if(p-q-exp) /比较,若p大于q则q后移 q0=q; q=q- else if(p-exp) /若p小于q则q插入p之

10、前 r=q- q-next=p0- q0-next=r; p0- p=q; q=r;exp=q-exp) /若相等,p的coef 与q的相加,然后删除q节点,释放q的空间 p-coef+=q-next=q- p0=p; q=p- q0=p;PNode * CreatPoly() /建立多项式链表,返回头指针 PNode * head, *p, *s; int i,n; p=head;多项式的项数为:%d,&n); for(i=1;icoef,& p-next=s; p=s; p-void FreePoly(PNode *h) /编写此算法,将以h为头指针的多项式的链表结点逐个释放。 PNode *p,*q; p=h-exp)!+-1; free(p); p=q; free(h); return; /Free函数用于销毁链表,最后指向头指针,跳出循环并释放头指针。double PolyValue(PNode *h, float x) /实现多项式求值功能。利用指针求出每一项的值,再用加法加起来。实验总结:这次试验提高了我的编程能力,让我认识到了我C语言的不足之处。也使我了解了线性链表是具有链接存储结构的线性表,它用节点存放线性表中的数据元素,逻辑上相邻的节点不能随机存取,因为这个原因我前期的程序一直出错,以后编程序的时候要牢记。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1