一元多项式的基本操作

#include <stdio.h>
#include <malloc.h>
typedef struct lnode
{
float cof;
int exp;
struct lnode *next;
}lnode;


void creat(lnode *h,int n)
{
lnode *t,*p;
t=h;
for(int i=0;i<n;i++)
{
p=(lnode*)malloc(sizeof(lnode));
scanf("%f%d",&p->cof,&p->exp);
p->next=NULL;
t->next=p;
t=p;
}
}


void print(lnode *h)
{
lnode *p;
p=h->next;
while(p)
{
printf("%f*x^%d+",p->cof,p->exp);
p=p->next;
}

}


void addpoly(lnode *la,lnode *lb,lnode *lc)
{
lnode *pa,*pb,*pc;
pa=la->next;
pb=lb->next;
pc=lc;
float sum;


    while(pa&&pb)
{
if(pa->exp>pb->exp)
{ pc->next=pb;pc=pb;pb=pb->next;}
else
if(pa->exp==pb->exp)

sum=pa->cof+pb->cof;
if(sum!=0)
{  pa->cof=sum;pc->next=pa;pc=pa;pa=pa->next;pb=pb->next;}
else
{
pa=pa->next;
pb=pb->next;
}
}
else
{
pc->next=pa;
pc=pa;
pa=pa->next;
}


}
if(pa) pc->next=pa;
else pc->next=pb;
}
int main()
{
lnode *la,*lb,*lc;
la=(lnode*)malloc(sizeof(lnode));
la->next=NULL;
printf("Please input a link:\n");
creat(la,3);
print(la);


lb=(lnode*)malloc(sizeof(lnode));
lb->next=NULL;
printf("Please input a link:\n");
creat(lb,3);
print(lb);


    lc=la;
addpoly(la,lb,lc);
print(la);
printf("\n==\n");
    print(lc);


    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41678405/article/details/80135803