一元多项式的基本操作

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值