#include <iostream>
#include <cstdio>
using namespace std;
typedef int Status;
typedef int Elem;
typedef struct PNode
{
float coef;
int expn;
struct PNode *next;
} PNode, *Polynomial;
Status CreatPolyn(Polynomial &P, int n)
{
P = new PNode;
P->next = NULL;
for (int i = 1; i <= n; ++i)
{
PNode *s = new PNode;
cin >> s->coef >> s->expn;
PNode *pre = P;
PNode *q = P->next;
while (q&&q->expn < s->expn)
{
pre = q;
q = q->next;
}
s->next = q;
pre->next = s;
}
return 1;
}
Status AddPolyn(Polynomial &Pa, Polynomial &Pb)
{
PNode *p1, *p2, *p3 = Pa;
p1 = Pa->next, p2 = Pb->next;
p3 = Pa;
while (p1&&p2)
{
int sum = 0;
PNode *r;
if (p1->expn == p2->expn)
{
sum = p1->coef + p2->coef;
if (sum)
{
p1->coef = sum;
p3->next = p1;
p3 = p1;
p1 = p1->next;
p2 = p2->next;
}
else {
r = p1, p1 = p1->next;
r = p2, p2 = p2->next;
}
}
else if (p1->expn < p2->expn)
{
p3->next = p1;
p3 = p1;
p1 = p1->next;
}
else
{
p3->next = p2;
p3 = p2;
p2 = p2->next;
}
p3->next = p1 ? p1 : p2;
delete Pb;
}
return 1;
}
int main()
{
Polynomial P1, p2;
-
CreatPolyn(P1, 1);
CreatPolyn(p2, 1);
AddPolyn(P1, p2);
cout <<P1->next->coef << " " << P1->next->expn << " ";
}