//多项式相加 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<Node>* add2list(list<Node>* l1, list<Node>*l2) { list<Node>l3; 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; }