●试题六
阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。
【程序6说明】
本程序实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数有:
createList():创建按指数降序链接的多项式链表,以表示多项式。
reverseList():将多项式链表的表元链接顺序颠倒。
multiplyList(List L1,List L2):计算多项式L1和多项式L2的乘积多项式。
【程序6】
#include
class List;
class ltem{
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<<"输入多项式中的一项(系数、指数):"< 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*pLl,*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.list; 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;} } reverseList();L2.reverseList(): } void main() {ListL1,L2,L; cout<<"创建第一个多项式链表\n";L1.createList(); cout<<"创建第二个多项式链表\n";L2.createList(); L.multiplyList(L1,L2); }