33,027
社区成员




#include "stdlib.h"
#include <stdio.h>
typedef struct LNode
{
int coef;
int expn;
struct LNode *next;
}LNode,*ListNode;
ListNode CreateFromTail()
{
ListNode l,p,tail;
int m;
int n;
l=(ListNode)malloc(sizeof(LNode));
l->next=NULL;
tail=l;
printf("\nplease put the coef:");
scanf("%d",&m);
printf("\nplease put the expn:");
scanf("%d",&n);
while(m)
{
p=(ListNode)malloc(sizeof(LNode));
p->coef=m;
p->expn=n;
tail->next=p;
tail=p;
printf("\nplease put the coef:");
scanf("%d",&m);
printf("\nplease put the expn:");
scanf("%d",&n);
}
tail->next=NULL;
return l;
}
ListNode MergeList(ListNode la,ListNode lb)
{
ListNode ra,rb,pa,pb;
int sum;
ra=la;
rb=lb;
pa=la->next;
pb=lb->next; //这里你原先是 pb=la->next;
while(pa&&pb)
{
if(pa->expn>pb->expn)
{
ra=ra->next;
pa=pa->next;
}
else if(pa->expn<pb->expn)
{
rb->next=pb->next;
pb->next=ra->next;
ra->next=pb;
ra=ra->next;
pa=ra->next;
pb=rb->next;
}
else
{
if((pa->coef+pb->coef)!=0)
{
sum=pa->coef+pb->coef;
pa->coef=sum;
ra=ra->next;
pa=pa->next;
rb=rb->next;
pb=pb->next;
}
else
{
pa=pa->next;
pb=pb->next;
ra->next=pa;
rb->next=pb;
}
}
}
if(pb)
ra->next=pb;
free(lb);
return la;
}
main()
{
ListNode m,n,l,p;
printf("the first equation:");
m=CreateFromTail();
printf("\n");
printf("the second equation:");
n=CreateFromTail();
l=MergeList(m,n);
p=l->next;
while(p!=NULL)
{
printf(" %d %d\t",p->coef,p->expn);
p=p->next;
}
system("pause");
}