麻烦大家看看这个一元多项式相乘,错在那里。
问题出现在multiply(linknode *fa,linknode *fb,linknode *fc)建新表fc中,我这样写多项式相乘应该不对,请大家不要站在如何写才对的基础上看。我主要想知道我这样写错在那里了,麻烦大家了。#include <stdio.h>
#include <math.h>
typedef struct LinkNode
{
float coef; //多项式系数
int index; //多项式指数
struct LinkNode *next;
}linknode;
int createlink(linknode *head)
{
head->next=NULL;
int z;
linknode *p,*s;
p=head;
float a=1;
int n;
int b=1;
printf("请按多项式指数由高到低输入系数和指数:\n");
while(z)
{
scanf("%f %d",&a,&b);
if(fabs(a)>0.000001)
{
s=new linknode;
s->coef=a;
s->index=b;
s->next=NULL;
p->next=s;
p=s;
n++;
}
else z=0;
}
return n;
}
void show(linknode *head)
{
linknode *p;
p=head->next;
while(p&&p->next)
{
printf("\(%fx^%d\)+",p->coef,p->index);
p=p->next;
}
printf("\(%fx^%d\) ",p->coef,p->index);
printf("\n");
}
void multiply(linknode *fa,linknode *fb,linknode *fc)
{
int i,j,L; //j和L分别记录链表fa和链表fb的长度
linknode *m,*n,*k,*p;
m=fa->next;
n=fb->next;
fc->next=NULL;
k=fc;
for(i=1;i<=L;i++) //从链表fa的第一个结点开始
{
for(i=1;i<=j;j++) //乘以链表fb的所有结点
{
p=new linknode; //以下是将一个链表fa的结点乘以链表fb的一个结点所得的结果放进新建链表fc每个结点中,建新表fc的过程
p->coef=m->coef*n->coef;
p->index=m->index+n->index;
p->next=NULL;
k->next=p;
n=n->next;
}
m=m->next;
}
}
void main()
{
int L,j;
linknode *fa,*fb,*fc;
fa=new linknode;
fb=new linknode;
fc=new linknode;
L=createlink(fa); //L记录链表fa的长度
printf("fa(x)=");
show(fa);
j=createlink(fb); //j记录链表fb的长度
printf("fb(x)=");
show(fb);
void multiply(linknode *fa,linknode *fb,linknode *fc);
printf("fa(x)*fb(x)=");
show(fc);
}