#include
#include
#include
typedef struct PNode
{
float coef; //系数
int expn; //指数
struct PNode *next; //指向下一项的指针
}PNode; //一元多项式中的项
struct PNode *creatPoly(PNode *head,int n) //建立一元多项式
{
int i=1;
struct PNode *s,*pre;
head=(struct PNode *)malloc(sizeof(struct PNode));
head->next=NULL;
pre=head;
printf("请输入各项的系数与指数");
for(i=1;i<=n;i++)
{
scanf("%d%d",&pre->coef,&pre->expn);
s=(struct PNode *)malloc(sizeof(struct PNode));
pre->next=s;
pre=s;
}
pre->next=NULL;
return 0;
}
struct PNode *addPoly(PNode *L1,PNode *L2) //实现多项式加法运算
{
int sum;
struct PNode *p1,*p2,*p3,*r;
p3=p1;
p1=p1->next;
p2=p2->next;
while(p1&&p2)
{
if(p1->expn==p2->expn)
{
sum=p1->coef+p2->coef;
if(sum!=0)
{
p1->coef = sum;
p3->next=p1;
p3=p1;
p1=p1->next;
}
else //(p3!=NULL)
{
r=p1;
p1=p1->next;
free(r);
}
r=p2;
p2=p2->next;
free(r);
}
else if (p1->expn < p2->expn && p3!=NULL)
{
p3->next=p1;
p3=p1;
p1=p1->next;
}
else //(p1->expn > p2->expn && p3!=NULL)
{
p3->next = p2;
p3 = p2;
p2 = p2->next;
}
}
p3->next = p1 ? p1:p2;
free(p2);
return p1;
}
struct PNode *output(PNode *p) //打印该链表的结果
{
while(p->next!=NULL)
{
printf("%d%2d",p->coef,p->expn);
p=p->next;
}
printf(",");
return 0;
}
int main()
{
int n,m;
struct PNode *headA,*headB;
printf("请输入多项式A的项数:");
scanf("%d",&n);
creatPoly(headA,n);
printf("输出多项式A:");
output(headA);
printf("请输入多项式B的项数:");
scanf("%d",&m);
creatPoly(headB,m);
printf("输出多项式B:");
output(headB);
addPoly(headA,headB);
printf("输出两个多项式相加后的结果多项式A:");
return 0;
}
哪位大神能帮忙看一下代码哪里出问题了吗?运行结果不正确,输出不了多项式的结果!谢谢