#include
#include
typedef struct LNode
{
int coef,ex;
struct LNode *next;
}LNode;
LNode *create_LNode(void);
LNode *add_LNode(LNode *,LNode *);
LNode *mul_LNode(LNode *,LNode *);
void print_LNode(LNode *);
int main(void)
{
LNode *heada,*headb,*headsum,*headmul;
heada=NULL;headb=NULL; headsum=NULL;headmul=NULL;
printf("1. please create mul 1\n");
printf("2. please create mul 2\n");
printf("please input coef and exponent:\n");
printf("3. The mul is: \n");
}
//创建
LNode *create_LNode()
{
int iX=0,iZ=0;
LNode *head=NULL,*c=NULL,*d=NULL;
head=(LNode *)malloc(sizeof(LNode));
d=head;
printf("please input coef and exponent:\n");
scanf("%d%d",&iX,&iZ);
while(iX != 0)
{
c=(LNode *)malloc(sizeof(LNode));
c->coef=iX,c->ex=iZ;
d->next=c;
d=c;
scanf("%d%d",&iX,&iZ);
}
d->next=NULL;
return head;
}
//相加
LNode *add_LNode(LNode *p1, LNode *p2)
{
LNode *head, *tmp, *c;
int value;
p1=p1->next;
p2=p2->next;
head=tmp=(LNode*)malloc(sizeof(LNode));
head->next=NULL;
while(p1 && p2)
{
if(p1->ex == p2->ex)
{
value=p1->coef+p2->coef;
if(value != 0)
{
c=(LNode *)malloc(sizeof(LNode));
c->coef=value;
c->ex=p1->ex;
c->next=NULL;
}
p1=p1->next;
p2=p2->next;
}
else
if(p1->ex < p2->ex)
{
c=(LNode *)malloc(sizeof(LNode));
c->coef=p1->coef;
c->ex=p1->ex;
c->next=NULL;
p1=p1->next;
}
else
{
c=(LNode *)malloc(sizeof(LNode));
c->coef=p2->coef;
c->ex=p2->ex;
c->next=NULL;
p2=p2->next;
}
if(head->next==NULL)
{
head->next=c;
tmp=c;
}
else
{
tmp->next=c;
tmp=c;
}
}
tmp->next=p1?p1:p2;
return head;
}
//相乘
LNode *mul_LNode(LNode *p1, LNode *p2)
{
LNode *head;
LNode *t,*q,*c,*d;
head=(LNode *)malloc(sizeof(LNode));
head->next=NULL;
d=(LNode *)malloc(sizeof(LNode));
d->next=NULL;
for(t=p1->next;t;t=t->next)
{
for(q=p2->next;q;q=q->next)
{
c=(LNode *)malloc(sizeof(LNode));
d->next=c;
c->coef=q->coef * t->coef;
c->ex=q->ex + t->ex;
c->next=NULL;
head=add_LNode(d,head);
}
}
return head;
}
//输出
void print_LNode(LNode *head)
{
LNode *p=NULL;
p=head->next;
if(p == NULL)
printf("The multinomial is NULL.\n");
else
{
do
{
if(p->coef>=0)
printf("+%dx^%d",p->coef,p->ex);
else
printf("%dx^%d",p->coef,p->ex);
p=p->next;
}while(p != NULL);
printf("\n");
}
}