问答题
【说明】 以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有: createList():创建按指数降序链接的多项式链表,以表示多项式: reverseList():将多项式链表的表元链接顺序颠倒: multiplyList(ListL1,ListL2)计算多项式L1和多项式L2的乘积多项式。 【C++程序】 #include <iostream.h> class List; class Item friend class List; private: double quot ; int exp ; Item *next; Public: Item(double_quot,int_exp) (1) ; ; class List private: Item *list; Public: List() list=NULL:
void reverseList(); void multiplyList(List L1,List L2); void createList(); ; void List::createList() Item *p,*U,*pre; int exp; double quot; list = NULL; while (1) cout << "输入多项式中的一项(系数、指数) :" << endl; cin >> quot >> exp: if ( exp<0 ) break ; //指数小于零,结束输入 if ( quot=0 ) continue; p = list; while ( (2) ) //查找插入点 pre = p; p = p->next;
if ( p != NULL && exp = p->exp ) p->quot += quot; continue ;
u = (3) ; if (p == list) list = u; else pre->next = u; u ->next = p;
void List::reverseList() Item *p, *u; if ( list==NULL ) return; p = list ->next; list -> next = NULL; while ( p != NULL) u = p -> next; p ->next = list; list = p; p = u;
void List::multiplyList ( List L1, List L2 ) Item *pL1,*pL2,*u; int k, maxExp; double quot; maxExp = (4) : L2.reverseList(); list=NULL; for ( k = maxExp;k >= 0;k-- ) pL1 = L1.list; while ( pL1 != NULL && pL1 -> exp > k ) pL1 = pL1 ->next; pL2 = L2.1ist; while (pL2 NULL && (5) ) pL2 = pL2 -> next; quot = 0.0; while (pL1 != NULL && pL2 != NULL) if(pL1->exp+pL2->exp==k) (6) pL1 = pL1 -> next; pL2 = pL2 -> next; else if ( pL1 -> exp + pL2 -> exp > k ) pL1 = pL1 -> next; else pL2 = pL2 -> next;
if ( quot !=0.0 ) u = new item( quot, k ); u -> next = list; list = u;