思路:好像没啥吧,经典归并排序的思路
Polynomial Add( Polynomial a, Polynomial b )
{
Polynomial res = (Polynomial)malloc(sizeof(struct Node));
PtrToNode head = res, head1 = a, head2 = b;//
while(head1->Next && head2->Next)//归并排序
{
PtrToNode node = (PtrToNode)malloc(sizeof(struct Node));
node->Exponent = 0;
node->Coefficient = 0;
node->Next = NULL;
if(head1->Next->Exponent == head2->Next->Exponent)//次数相等
{
node->Exponent = head1->Next->Exponent;
node->Coefficient = head1->Next->Coefficient + head2->Next->Coefficient;
head1 = head1->Next;
head2 = head2->Next;
if(node->Coefficient !=0)
{
head->Next = node;//连接起来
head = node;
}
}
else if(head1->Next->Exponent > head2->Next->Exponent)
{
node->Exponent = head1->Next->Exponent;
node->Coefficient = head1->Next->Coefficient;
head->Next = node;
head = node;
head1 = head1->Next;
}
else
{
node->Exponent = head2->Next->Exponent;
node->Coefficient = head2->Next->Coefficient;
head->Next = node;
head = node;
head2 = head2->Next;
}
}
if(head1->Next)//还有剩余
{
head->Next = head1->Next;
}
if(head2->Next)
{
head->Next=head2->Next;
}
return res;
}