问答题

【程序6说明】 本程序实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数有: createList():创建按指数降序链接的多项式链表,以表示多项式。 reverseList():将多项式链表的表元链接顺序颠倒。 multiplyList(List L1,List L2):计算多项式L1和多项式L2的乘积多项式。 【程序6】 #include<iostream.h> class List; class |tem{ friend class List; private: double quot; int exp; |tem * next; public: |tem(double_quot,int_exp) { (1) ;} }; class List { private: |tem * list; public: List(){list=NULL;} void reverseList(); void multiplyList(List L1,List L2); void createList(); }; void List::createList() { |tem * p,* u,*pre; int exp; doubte 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() { |tem*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) {|tem*pLI,*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 |tem(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); }

【参考答案】

(1)quot=_quot;exp=_exp;next=NULL; (2)p!=NULL && exp < p-> ex......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】下面是一个Applet程序,其功能是根据给出的小时,分钟和秒数计算相等的秒数,即将1分钟化为60秒,依此类推。要求建立一个时间类,时间参数均作为类的成员变量,并且给出换算时间的方法,也作为这个类的成员函数,可以供外部对象进行调用。同时还需要在输出窗口中显示换算结果,并且将结果写到out3_3.txt文件中,本题给出确定的时间为4小时23分47秒,要求换算成以秒做单位的时间。程序运行结果如图11所示。import java.io.*;import java.awt.*;impOrt java.applet.*; *<applet code=ex7_7.class width=800 height=400>< applet>* public class ex7_7 extends APPlet{public void paint (Graphics g){int nSum;class myTime7_7{public int h;public int m;public int s;public int out;public int caculateSecond(){(1) ;return out;}}myTime7_7 objTime7_7=new myTime7_7();ObjTime7_7. h=4;ObjTime7_7.m=23;ObjTime7_7.s=47;nSum=objTime7_7. (2) ;g.drawString( 时: +objTime7_7.h,20,30);g.drawString( 分: +objTime7_7.m,20,50);g.drawString( 秒: +objTime7_7.s,20,70);g.drawString( (3) );try{FileOutputStream fos7_7=new FileOutputStream( out7_7.txt );BufferedOutputStream bos7_7=new BufferedOutputStream(fos7_7,1024);PrintStream ps7_7=new PrintStream(bos7_7,false);SyStem.setOut(ps7_7);System.out.println( (4) );ps7_7. close();}catch(|OException ioe){(5) (ioe);}}}ex7_7.htm|<HTML><HEAD><TITLE>ex7_7< TITLE>< HEAD><BODY><appletcode= ex7_7.class width=800 height=400>< applet>< BODY>< HTML>
问答题
【程序5说明】著名的四色定理指出任何平面区域图均可用四种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过四种颜色的着色方案。程序中用1~4表示四种颜色。要着色的N个区域用0~N-1编号,区域相邻关系用 adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域j相邻;矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i所着颜色。【程序5】#include<stdio.h>#define N 10void output(int color[]) *输出一种着色方案* { int i;for(i=0;i<N;i++)printf( %4d ,color[i]);printf( n );}int back (int * ip,int color[]) *回溯* { int c=4;while(c==4){if(*ip<=0)return 0;--(*ip);c= (1) ;color[*ip]=-1;}return c;} *检查区域i,对c种颜色的可用性* int colorOk(int i,int c,int [][N],int color[]}{ int j;for(j=0;j<i;j++)if( (2) )return 0;return 1;} *为区域i选一种可着的颜色* int select (int i,int c,int adj[][N],int color[]){ int k;for(k=c;k<=4;k++)if(colorOK( (3) ))return k;return 0;}int coloring(int adj[][N]) *寻找各种着色方案* { int color[N],i,c,cnt;for(i=0;i<N;i++)color[i] =-1;i=c=0;cnt=0;while(1){if((c= (4) )==0){c=back(&i,color);if(c==0)return cnt;}else{ (5) ;i++;if(i==N){output(color);++cnt;c=back(&i,color);}else c=0;}}}void main(){ int adj[N][N]={{0,1,0,1,1,1,1,1,1,1},{1,0,1,1,0,1,1,1,1,0},{0,1,0,1,0,1,1,0,1,1},{1,1,1,0,1,1,0,0,1,1},{1,0,0,1,0,1,0,0,0,0},{1,1,1,1,1,0,1,0,0,1},{1,1,1,0,0,1,0,0,1,0},{1,1,0,0,0,0,0,0,1,1},{1,1,1,1,0,0,1,1,0,1},{1,0,1,1,0,1,0,1,1,0}};printf( 共有%d组解. n ,coloring(adj));}