资源描述:
《第5章习题及解答》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1•假设按行优先存储整数数组A[9][3][5][8]吋,第一个元素的字节地址是100,每个整数占4个字节。问下列元素的存储地址是什么?(l)a()ooo(2)aim(3)43125(心*8247(1)aoooo的存储地址是100。(2)aUu的存储地址是776o”)33125的存储地址是1784。(4)a8247的存储地址是4416o2.设有三对角矩阵Anxn,将其三条对角线上的元素存于数组B[3][n]中,使得元素B[u][v]=air试推导出从(i,j)到(urv)的下标变换公式。u=iv={ji
2、fiW2Ij-i+2ifi>2}3•假设一个准对角矩阵:厂all巧2、a21a22a33a34a43%••••aij^2m-l/2m-l^2m-lr2m丄2m-l^2rnr2m丿按以下方式存储于一维数组B[4m]中:0123456...k4m-l4ma11a12^21a22a33a34^43•••aij•••^2m-lz2m*2叫2m-132m,2m写出由一对下标(i,j)求k的转换公式。略4.现有如下的稀疏矩阵A(如图所示),要求画出以下各种表示方法。⑴三元组表示法。⑵十字链表法。厂000220-15
3、0133000000-60000000091000000028000J略5•画出下列广义表的存储结构示意图o(1)A=((azbzc)zdz(azbzc))(2)b=(b,(b,(c,d),e),f)6.对于二维数组A[m][n]z其中m<=80zn<=80,先读入m,n,然后读该数组的全部元素,对如下三种情况分别编写相应算法:⑴求数组A靠边元素之和。⑵求从A[0][0]开始的互不相邻的各元素之和。⑶当m=n时,分别求两条对角线的元素之和,否则打印m!=n的信息。7.有数组A[4][4],把1到16个整
4、数分别按顺序放入A[0][0]...A[0][3],A[l][0]...A[l][3],A[2][0]•・.A[2][3],A[3][0]...A[3][3]中,编写一个算法获取数据并求出两条对角线元素的乘积。intmul(intA[4][4]){intk=l,s=l;for(i=0;i<4;i++)for(j=0;j<4;j++){A[i]U]=k;k++;}for(i=0;i<4;i++){s*=A[i][i];s*=A[i][3・i];}return(s);}8・n只猴子要选大王,选举办法如下:所
5、有猴子按1,2,n编号围坐一圈,从第1号开始按1、2号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。n和m由键盘输入,打印出最后剩下的猴子号。编写一个算法实现°typedefstructnode{intdata;structnode*next;}Node,*LkList;voidprocess(intn,intm){L二newNode;L->data=l;L->next二L;rear=L;for(i=2;i<=n;i++)s=newNode;s->data=i;s->next=re
6、ar->next;rear->next=s;rear=s;}P=L;while(p->next!=p){i=l;while(inext;i++;}q->next=p->next;cout«p->data«endl;deletep;p=q->next;}cout«,,thelastmonkyis:«p->data«endl;}9.假设稀疏矩阵A和B(具有相同的大小mF)都采用三元组表示,编写一个算法计算C=A+B,要求C也采用三元组表示。参见教科书10•假设稀疏矩阵A和B(分别为
7、mF和nT矩阵)采用三元组表示,编写一个算法计算C=A*B,要求C也是采用稀疏矩阵的三元组表示。#defineSMAX1024typedefstruct{inti;intj;datatypev;}SPNode;typedefstruct{SPNodedata[SMAX];/*0号单元未用*/intmu;intnu;inttu;}SPMatrix;SPMatrix*Matrix_add(SPMatrix*A,SPMatrix*B){SPMatrix*C;C->mu=A->mu;C->nu二A->nu;C-
8、>tu=0;pa=l;pb=1;pc=l;while(pa<=A->tu&&pb<=B->tu){if((A->data[pa].i==B->data[pb]・i)&&(A->data[pa].j==B->data[pb].j)){C->data[pc].i=A->data[pc].i;C->data[pc].j=A->data[pc].j;C->data[pc].v=A->data[pa].v+B->data[pb].v;C->tu++;