#include <stdio.h>
#include <stdlib.h>
typedef struct Polynode
{
int coef,exp;
struct Polynode *next;
}Polynode,*Polylist;
void polycreate(Polylist &head)
{
Polylist rear,s; int c,e;
head=(Polynode *)malloc(sizeof(Polynode));
rear=head;
scanf("%d %d",&c,&e);
while(c!=0){
s=(Polynode *)malloc(sizeof(Polynode));
s->coef=c; s->exp=e;
rear->next=s; rear=s;
scanf("%d %d",&c,&e);
}
rear->next=NULL;
}
polyadd(Polylist polya,Polylist polyb)
{
Polynode *pa,*pb,*pc,*r;
int sum;
pa=polya->next;
pb=polya->next;
pc=polya; //*pre指向和多項式的尾節點
while(pa!=NULL&&pb!=NULL)
{if(pa->exp<pb->exp)
{
pc->next=pa; pc=pa; pa=pa->next;}
else if(pa->exp==pb->exp)
{
sum=pa->coef+pb->coef;
if(sum!=0)
{
pa->coef=sum; pc->next=pa;
pc=pa;pa=pa->next;
r=pb;pb=pb->next;free(r);
}
else
{
r=pa;pa=pa->next;free(r);
r=pb;pb=pb->next;free(r);
}
} else
{ pc->next=pb; pc=pb; pb=pb->next;}
}
if(pa!=NULL) pc->next=pa;
else pc->next=pb;
}
void PrintPoly(Polylist p)
{
Polylist s;
s=p->next;
while(s)
{
printf("%0.2f x^%d",s->coef,s->exp);
s=s->next;
if(s!=NULL)
if(s->coef>=0) printf("+");
}
printf("\n");
}
int main()
{
Polylist polya,polyb;
polycreate(polya);
polycreate(polyb);
PrintPoly(polyadd(polya,polyb));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107158.html
標籤:C++ 語言
上一篇:C語言問題 求助貼
下一篇:C語言
