1、/#include “linklist.h“的定义#include using namespace std;struct elemint coef;int exp;template class linklist;template class nodefriend class linklist;template friend ostream template friend void addd(linklist * A,linklist *B);T date;node *next; ;template class linklisttemplate friend ostream template f
2、riend void addd(linklist * A,linklist * B);private:node *first;public:linklist();linklist(T a,int n);/形成一元多项式链表linklist();template ostream p=kk.first-next;while(p)osdate.coefdate.expnext;osvoid addd(linklist * A,linklist * B)node *p,*q,*pre,*qre,*v;pre=A-first; p=pre-next; /工作指针p初始化,指针pre始终指向p的前驱结点q
3、re=B-first; q=qre-next; /工作指针q初始化,指针qre始终指向q的前驱结点while(p p=p-next; else if (p-date.expq-date.exp) /第2种情况,将结点q插入到结点p之前,q指针后移v=q-next;q-next=p;pre-next=q; qre-next=v;q=v; else /第3种情况p-date.coef =p-date.coef+q-date.coef; /系数相加if (p-date.coef =0) /系数为0,删除结点p和结点qpre-next=p-next; /删除结点pdelete p;p=pre-next
4、;else /系数不为0,只删除结点qpre=p; p=p-next; qre-next=q-next; /删除结点qdelete q;q=qre-next;if(q) pre-next=q; /将结点q链接在第一个单链表的后面B-first-next=NULL; template linklist:linklist()first=new node;first-next=NULL;template linklist:linklist()node *p=first,*q;while(p)q=p;p=p-next;delete q;/以下是尾接法template linklist:linklist
5、(T a,int n)node *r; node *p;first=new node;first-next=NULL;r=first;for(int i=0;i;p-date=ai;r-next=p;r=p;r-next=NULL;*/主函数/主测试函数#include using namespace std;#include “linklist.h“void main()elem a4,b5;linklist *P,*Q;coutai.coefai.exp;linklist l1(a,4);coutbi.coefbi.exp;linklist l2(b,5);cout“输出第二个多项式为g(X):“endl;coutl2endl;P=Q=addd(P,Q);coutl1;