一元多项式求和代码.docVIP

  • 6
  • 0
  • 约3.04千字
  • 约 6页
  • 2017-06-08 发布于重庆
  • 举报
一元多项式求和代码

//#include linklist.h的定义 #include iostream using namespace std; struct elem { int coef; int exp; }; template typename T class linklist; template typename T class node { friend class linklistT; template typename T friend ostream operator(ostream os,linklistT ll); template typename T friend void addd(linklistT * A,linklistT *B); T date; nodeT *next; }; template typename T class linklist { template typename T friend ostream operator(ostream os,linklistT ll); template typename T friend void addd(linklistT * A,linklistT * B); private: nodeT *first; public: linklist(); linklist(T a[],int n);//形成一元多项式链表 ~linklist(); }; template typename T ostream operator(ostream os,linklistT kk) { nodeT *p; p=kk.first-next; while(p) { osp-date.coefX(p-date.exp) ; p=p-next; } osendl; return os; } template typename T void addd(linklistT * A,linklistT * B) { nodeT *p,*q,*pre,*qre,*v; pre=A-first; p=pre-next; //工作指针p初始化,指针pre始终指向p的前驱结点 qre=B-first; q=qre-next; //工作指针q初始化,指针qre始终指向q的前驱结点 while(p q) { if (p-date.expq-date.exp) { //第1种情况 pre=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和结点q pre-next=p-next; //删除结点p delete p; p=pre-next; } else { //系数不为0,只删除结点q pre=p; p=p-next; } qre-next=q-next; //删除结点q delete q; q=qre-next; } } if(q) pre-next=q; //将结点q链接在第一个单链表的后面 B-first-next=NULL; } template typename T linklistT::linklist() {

文档评论(0)

1亿VIP精品文档

相关文档