//多项式相加
LinkList* add2Link(LinkList*L1, LinkList*L2)
{
LinkList*p1, *p2;
LinkList*head , *pre, *p;
head = new LinkList;
head->next = NULL;
pre = head;
p1 = L1->next;
p2 = L2->next;
while (p1&&p2)
{
if (p1->exp == p2->exp)
{
p = new LinkList;
p->coef = p1->coef + p2->coef;
p->exp = p1->exp;
p1 = p1->next;
p2 = p2->next;
}
else if ((p1->exp) < (p2->exp))
{
p = new LinkList;
p->coef = p1->coef;
p->exp = p1->exp;
p1 = p1->next;
}
else
{
p = new LinkList;
p->coef = p2->coef;
p->exp = p2->exp;
p2 = p2->next;
}
pre->next = p;
pre = p;
}
if (p1&&!p2)
{
while (p1)
{
p = new LinkList;
p->coef = p1->coef;
p->exp = p1->exp;
p1 = p1->next;
pre->next = p;
pre = p;
}
}
else if (!p1&&p2)
{
while (p2)
{
p = new LinkList;
p->coef = p2->coef;
p->exp = p2->exp;
p2 = p2->next;
pre->next = p;
pre = p;
}
}
pre->next = NULL;
return head;
}
struct Node
{
int data;
int exp;
};
list* add2list(list* l1, list*l2)
{
listl3;
while(!l1->empty()&&!l2->empty())
{
if(l1->back().exp==l2->back().exp)
{
Node n1=new Node;
n1.data=l1->back().data+l2->back().data;
n1.exp=l1->back().exp;
l3.push_front(n1);
l1->pop_back();
l2->pop_back();
}
else
{
if(l1->back().exp>l2->back().exp)
{
Node n1=new Node;
n1.data=l2->back().data;
n1.exp=l2->back().exp;
l3.push_front(n1);
l2->pop_back();
}
else
{
Node n1=new Node;
n1.data=l1->back().data;
n1.exp=l1->back().exp;
l3.push_front(n1);
l1->pop_back();
}
}
}
while(!l2->empty())
{
Node n1=new Node;
n1.data=l2->back().data;
n1.exp=l2->back().exp;
l3.push_front(n1);
l2->pop_back();
}
while(!l1->empty())
{
Node n1=new Node;
n1.data=l1->back().data;
n1.exp=l1->back().exp;
l3.push_front(n1);
l1->pop_back();
}
return *l3;
}