本文格式为Word版,下载可任意编辑
— 2 —
一元多项式相加问题实验报告
一元多项式相加问题 一、 问题描述 通过键盘输入两个形如 P 0 +P 1 X 1 +P 2 X 2 ++P n X 的多项式,经过程序运后在
r=w; 即此时将 q 赋给 w,然后使 q 结点指向链表 b 中下一个待处理结点,然后将 w移动到新生成链表 c 的尾结点的后面,结果将 w 赋给 r,使得 r 仍指向链表 c 的尾结点。
本文格式为Word版,下载可任意编辑
— 6 —
⑶当 p-exp==q-exp 时,定义一个 float 类型的变量 x,当 x 不为 0 时,采取如下操作:
p-coef=x;
w=p;
p=p-next;
r-next=w;
r=w;
w=q;
q=q-next;
delete w;
即将 x 的值赋给 p 的系数域,之后将结点 p 赋给 w,然后将 p 结点后移,指向 a 中下一个待处理结点,然后将 w 移动到新生成链表 c 的尾结点的后面,结果将 w 赋给 r,使得 r 仍指向链表 c 的尾结点。同时,将 q 的内存空间释放,并使得 q 指向 b 中下一个待处理结点。
当 x 为 0 时,采取如下操作:
w=p;
p=p-next;
delete w;
w=q;
q=q-next;
delete w; 即将 pq 的空间释放,并分别使其指向各自链表中下一个待处理结点。
本文格式为Word版,下载可任意编辑
— 6 —
⑷当上面的循环举行完后,至少有一个链表已被遍历完,然后只需将另一个链表剩余的全体结点都移动到 c 中即可。
if(p!=NULL)
{
while(p)
{
w=p;
p=p-next;
r-next=w;
r=w;
}
}
if(q!=NULL)
{
while(q)
{
w=q;
q=q-next;
r-next=w;
r=w;
本文格式为Word版,下载可任意编辑
— 7 —
}
} ⑸结果将 c 中的结果一个结点的指针域置为空,并返回 c 的地址。
r-next=NULL;
return c; 4、 主函数功能设计 采用循环的形式可以屡屡举行两个多项式的初始化和求和。
四、 界面设计 提示用户举行每一步操作以及每一步输出的内容,界面简明明显。
五、 运行与调试
六、 源代码 # struct node {
float coef;
//系数域
int exp;
//指数域
struct node *next; }; node *in_fun() {
node *p,*a,*q,*r;
a=q=NULL;
float x;
int y;
cinxy;
while(x!=0||y!=0)
{
本文格式为Word版,下载可任意编辑
— 8 —
while(x==0)
{
cinxy;
if(x==0y==0)
break;
else
{continue;}
}
if(x==0y==0)
break;
p=new node;
p-coef=x;
p-exp=y;
if(a==NULL) a=p;
else q-next=p;
q=p;
cinxy;
if(x==0y==0)
break;
r=a;
while(r!=q-next)
{
本文格式为Word版,下载可任意编辑
— 9 —
if(y=r-exp)
{
cout请按照指数递增依次输入,请重新输入;
cinxy;
break;
}
r=r-next;
一元多项式相加问题实验报告 来自淘豆网m.daumloan.com转载请标明出处.