问题描述:
一元多项式的相加
plinknode *add(plinknode *a,plinknode *b)
{
plinknode *head,*p1,*p2,*p3,*p4;
p1=a;
head=a;
p3=b->next;
do
{
p2=p1->next;
if(p2->expn>p3->expn)
{
p1->next=p3;
p4=p3->next;
p3->next=p2;
p3=p4;
p1=p1->next;
}
if(p2->expn==p3->expn)
{
p2->coef=p3->coef+p2->coef;
if(p2->coef==0)
{
p1->next==p2->next;
free(p2);
p4=p3;
free(p3);
p3=p4->next;
p2=p1->next;
}
else
{
p4=p3;
free(p3);
p3=p4->next;
}
}
if(p2->expnexpn)
{
p1=p1->next;
p2=p2->next;
}
}while(p1->next!=NULL&&p3!=NULL);
if(p2!=NULL)
{
p3->next=p2;
free(p3);
}
return (head);
}
其中plinknode已定义:
typedef struct student
{
int coef;
int expn;
struct student *next;
}
plinknode;
请知道的告诉下谢谢了
这只是程序的一小段,目的是为了实现a,b多项式的相加
plinknode *add(plinknode *a,plinknode *b)
{
plinknode *head,*p1,*p2,*p3,*p4;
p1=a;
head=a;
p3=b->next;
do
{
p2=p1->next;
if(p2->expn>p3->expn)
{
p1->next=p3;
p4=p3->next;
p3->next=p2;
p3=p4;
p1=p1->next;
}
if(p2->expn==p3->expn)
{
p2->coef=p3->coef+p2->coef;
if(p2->coef==0)
{
p1->next==p2->next;
free(p2);
p4=p3;
free(p3);
p3=p4->next;
p2=p1->next;
}
else
{
p4=p3;
free(p3);
p3=p4->next;
}
}
if(p2->expnexpn)
{
p1=p1->next;
p2=p2->next;
}
}while(p1->next!=NULL&&p3!=NULL);
if(p2!=NULL)
{
p3->next=p2;
free(p3);
}
return (head);
}
其中plinknode已定义:
typedef struct student
{
int coef;
int expn;
struct student *next;
}
plinknode;
请知道的告诉下谢谢了
这只是程序的一小段,目的是为了实现a,b多项式的相加
问题解答:
我来补答展开全文阅读