一元多项式相加问题实验报告概要Word格式文档下载.docx

上传人:b****6 文档编号:17924499 上传时间:2022-12-12 格式:DOCX 页数:15 大小:151.50KB
下载 相关 举报
一元多项式相加问题实验报告概要Word格式文档下载.docx_第1页
第1页 / 共15页
一元多项式相加问题实验报告概要Word格式文档下载.docx_第2页
第2页 / 共15页
一元多项式相加问题实验报告概要Word格式文档下载.docx_第3页
第3页 / 共15页
一元多项式相加问题实验报告概要Word格式文档下载.docx_第4页
第4页 / 共15页
一元多项式相加问题实验报告概要Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

一元多项式相加问题实验报告概要Word格式文档下载.docx

《一元多项式相加问题实验报告概要Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《一元多项式相加问题实验报告概要Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

一元多项式相加问题实验报告概要Word格式文档下载.docx

当遇到输入结束标志是停止输入,而转去执行程序下面的部分。

具体函数构造为:

polynodecreat_polynode(){

polynodeA,p,q,s;

//建立这种类型的头指针,尾指针,遍历指针和动态指针

floata;

intb;

A=newpoly;

A->

next=NULL;

q=A;

p=A;

cin>

>

a;

b;

while(a!

=0||b!

=0)

{

s=newpoly;

s->

cofe=a;

exp=b;

while(q->

next)

{

if(q->

next->

exp<

b)

q=q->

next;

//遍历链表,若指数大于原链表指数,指针后移一个

else{

s->

next=q->

q->

next=s;

break;

//若不是,将结点插入指针后面

}

next==NULL)

next=p->

p->

p=s;

//q遍历到链表尾仍未插入,将结点插入最后,改变尾指针使其指向新结点

q=A;

//让q返回头指针处,以便下一次遍历链表

cin>

}

if(p!

=NULL)

returnA;

}

2.多项式相加的功能模块

此模块根据在1中建立的两个多项式进行相加运算,并存放在以C为头指针的一个新链表中。

可以采用如下方法进行设计:

设指针p,q,r分别指向描述多项式的链表A,B,C头部,比较p->

exp与q->

exp;

若p->

exp小,则做如下操作:

while(p!

=NULL&

&

q!

=NULL)//在两个指针不为空的情况下

r=newpoly;

if(p->

q->

exp)

r->

cofe=p->

cofe;

if(r->

cofe==0)

deleter;

p=p->

continue;

//若r指向的系数为,则p前进,释放r并强制执行下一次循环

exp=p->

exp;

next=s->

next=r;

s=r;

p=p->

//p指针指向的指数小,将此结点赋给r,p指针前进

exp=q->

exp,则:

else

exp==q->

cofe+q->

//若两指针指数部分相等,则系数相加赋给r

q=q->

//两指针均前进

exp>

exp,则:

cofe=q->

在两个指针中有一个为空以后,可以进行如下操作将多项式中剩余项赋到C中:

while(p==NULL&

r=newpoly;

}//若有一个多项式已经结束则把另一个多项式的值赋给新多项式

while(q==NULL&

p!

if(r!

3.多项式显示的功能模块

此模块用于多项的显示,用“系数---指数对”的形式表示表达式:

cout<

<

"

("

n->

cofe<

"

)"

;

n=n->

四.界面设计

在输入多项式时,界面提示输入(00)表示结束输入。

五.编码实现

//9u.cpp:

定义控制台应用程序的入口点。

//

#include"

stdafx.h"

#include<

iostream>

usingnamespacestd;

polynodehead_c;

elseif(q->

exp==b)

cofe=s->

deletes;

polynodecreat_polynode3(polynodehead_a,polynodehead_b){

polynodep,q,r,s;

p=head_a->

q=head_b->

head_c=newpoly;

head_c->

next=NULL;

s=head_c;

while(p!

else

while(p==NULL&

returnhead_c;

intmain()

{

polynodehead_a,head_b;

cout<

请输入第一个多项式(00结束输入):

endl;

head_a=creat_polynode();

请输入第二个多项式(结束输入):

head_b=creat_polynode();

polynodem;

polynoden;

m=creat_polynode3(head_a,head_b);

n=m->

polynodex,y;

x=head_a->

y=head_b->

["

while(x)

cout<

x->

x=x->

]"

+"

while(y)

y->

y=y->

="

if(n==NULL)

0"

while(n)

return0;

}

六.运行与测试

(1)(2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7)

(2)(1+x+x2+x3+x4+x5)+(―x3―x4)=(1+x+x2+x5)

(3)(x+x3)+(―x―x3)=0

(4)(x+x100)+(x100+x200)=(x+2x100+x200)

(5)(x+x2+x3)+0=x+x2+x3

(6)(7-5x8+11x9)+(2x+5x8-3.1x11)=(-3.1x11+11x9+2x+7)

(7)(―x3―x4)+(1+x+x2+x3+x4+x5)=(1+x+x2+x5)

(8)(―x―x3)+(x+x3)=0

(9)(x100+x200)+(x+x100)=(x+2x100+x200)

(10)0+(x+x2+x3)=(x+x2+x3)

(11)(2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7)当不按递增顺序输入时,结果仍正确

(12)(2x+2x)+0=4x

七.实验总结

这次实验的目的主要是学会如何建立链表,通过遍历链表来进行插入,查找与删除等操作。

因为要建立三个多项式,指针较多,在初次建立时,有的指针指向出现问题,编译已过但调试出的结果不对。

通过反复检查指针指向终于发现问题所在。

这次的教训使我明白了在编写程序时要小心谨慎,避免造成不必要的麻烦。

虽然这个程序不是很大,但是因为不仔细出现的失误还是让我花了大量的时间去改正,如果程序很大的话,那后果是无法想象的,严谨的态度对我们来说至关重要!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

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

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