一元多项式相加问题的实验报告文档格式.docx
《一元多项式相加问题的实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《一元多项式相加问题的实验报告文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
具体函数为node*in_fun()
此函数的处理较为全面,要求用户按照指数递增的顺序和一定的输入格式输入各个系数不为0的子项,输入一个子项建立一个相关结点,当遇到输入结束标志时停止输入。
关键步骤具体如下:
p=newnode;
p->
coef=x;
exp=y;
if(a==NULL)a=p;
elseq->
next=p;
q=p;
2、多项式显示功能函数
由于系数有正有负,故采取如下处理:
对于正数,输出时在前面加“+”,头指针除外;
对于负数,直接将系数输出即可,即:
p=a;
while(p)
{
if(p==a)cout<
<
p->
coef<
"
*x^"
exp;
elseif(p->
0)cout<
coef>
+"
p=p->
next;
}
输出的多项式的形式形如:
P1X^1+P2X^2+…+PnX^n
3、多项式相加的功能函数
函数为:
node*plus_fun(node*a,node*b)
此函数根据在1中初始化的两个多项式进行相加运算,并存放在以c为头指针的一个新链表中。
设指针p,q,r分别指向描述多项式的链表a,b,c的头部,其中将a也赋给c。
p,q两个指针同时移动,并根据p,q两结点对应的指数的大小采取不同的操作。
⑴当(p->
exp)<
(q->
exp)时,操作如下:
w=p;
p=p->
r->
next=w;
r=w;
即定义一个结点w,将结点p赋给它,然后将p结点后移,指向a中下一个待处理结点,然后将w移动到新生成链表c的尾结点的后面,最后将w赋给r,使得r仍指向链表c的尾结点。
⑵当p->
exp>
q->
exp时,采取如下操作:
w=q;
q=q->
即此时将q赋给w,然后使q结点指向链表b中下一个待处理结点,然后将w移动到新生成链表c的尾结点的后面,最后将w赋给r,使得r仍指向链表c的尾结点。
⑶当p->
exp==q->
exp时,定义一个float类型的变量x,当x不为0时,采取如下操作:
w=p;
p=p->
r->
r=w;
w=q;
q=q->
deletew;
即将x的值赋给p的系数域,之后将结点p赋给w,然后将p结点后移,指向a中下一个待处理结点,然后将w移动到新生成链表c的尾结点的后面,最后将w赋给r,使得r仍指向链表c的尾结点。
同时,将q的内存空间释放,并使得q指向b中下一个待处理结点。
当x为0时,采取如下操作:
w=p;
即将pq的空间释放,并分别使其指向各自链表中下一个待处理结点。
⑷当上面的循环进行完后,至少有一个链表已被遍历完,然后只需将另一个链表剩余的所有结点都移动到c中即可。
if(p!
=NULL)
while(p)
{
w=p;
}
if(q!
while(q)
w=q;
⑸最后将c中的最后一个结点的指针域置为空,并返回c的地址。
r->
next=NULL;
returnc;
4、主函数功能设计
采用循环的形式可以多次进行两个多项式的初始化和求和。
四、界面设计
提示用户进行每一步操作以及每一步输出的内容,界面简明清晰。
五、运行与调试
六、源代码
#include<
iostream.h>
node*in_fun()
node*p,*a,*q,*r;
a=q=NULL;
floatx;
inty;
cin>
>
x>
y;
while(x!
=0||y!
=0)
while(x==0)
{
cin>
if(x==0&
&
y==0)break;
else{continue;
}
if(x==0&
p=newnode;
cin>
r=a;
while(r!
=q->
next)
if(y<
=r->
exp)
{
cout<
请按照指数递增顺序输入,请重新输入"
;
cin>
break;
}
r=r->
=NULL)q->
returna;
voidout_fun(node*a)
node*p;
p=a;
cout<
endl;
node*c,*p,*q,*r,*w;
q=b;
c=a;
r=c;
while(p&
q)
if((p->
exp))
exp)
x=p->
coef+q->
coef;
if(x!
p->
elseif(x==0)
r->
intmain()
node*a,*b,*c;
intn=1;
while(n)
endl<
--------一元多项式相加问题----------"
请输入第一个多项式的系数和指数"
a=in_fun();
您所输入的多项式为"
out_fun(a);
请输入第二个多项式的系数和指数"
b=in_fun();
out_fun(b);
初始化完毕,两多项式相加得"
c=plus_fun(a,b);
out_fun(c);
继续初始化多项式请输入1,停止请输入0"
n;
while(n!
=1&
n!
cout<
输入错误,请重新输入:
return0;