作业帮 > 综合 > 作业

c语言求两个多项式之和算法错误

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/10 09:10:24
c语言求两个多项式之和算法错误
#include
#include
typedef struct Lnode{
float coef; //系数
int expn; //指数
struct Lnode *next;
}LinkList;
LinkList * CreatList(int n) //用n限制循环次数
{
LinkList *L,*p,*r;
int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
printf("请按指数从小到大输入多项式每项的系数和指数,系数相同并为一项:\n");
for(i=n;i>0;i--)
{
p=(LinkList *)malloc(sizeof(LinkList));
scanf("%f,%d",&(p->coef),&(p->expn));
r->next=p;
r=p;
}
r->next=NULL;
return L;
}
LinkList * And(LinkList * La,LinkList *Lb) //多项式相加
{
LinkList *p,*q,*Lc,*r,*s;
int sum;
p=La->next; q=Lb->next;
Lc=(LinkList *)malloc(sizeof(LinkList)); //创建新链表存储相加后的多项式
r=Lc;
for(p!=NULL)
{
for((q!=NULL)&&(q->expnexpn))
{
if(p->expn==q->expn){
sum=p->coef+q->coef;
s=(LinkList *)malloc(sizeof(LinkList)); //尾插法
s->coef=sum; s->expn=p->expn;
r->next=s;
r=s;
}
else{
s=(LinkList *)malloc(sizeof(LinkList));
s->coef=q->coef; s->expn=q->expn;
r->next=s;
r=s;
}
q=q->next;
}
p=p->next;
}
r->next=NULL;
return Lc;
}
void Print(LinkList *L) //输出多项式
{
LinkList *p=L;
while(p->next!=NULL)
{
printf("%fx^%d ",p->coef,p->expn);
p=p->next;
}
printf("\n");
}
int main(void)
{
LinkList *La,*Lb,*L;
int n;
printf("请存储第一个多项式的项数:");
scanf("%d",&n);
La=CreatList(n);
printf("请存储第二个多项式的项数:");
scanf("%d",&n);
Lb=CreatList(n);
L=And(La,Lb);
Print(La);
system("pause");
return 0;
}
请看函数And(),编译时显示好多错误,我用的是DEV CPP
c语言求两个多项式之和算法错误
for(p!=NULL)
{
for((q!=NULL)&&(q->expnexpn))
改成
while(p!=NULL)
{
while((q!=NULL)&&(q->expnexpn))