第5章习题与解答.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
⒈假设按行优先存储整数数组 A[9][3][5][8] 时,第一个元素的字节地址是100,每个整数占4 个字节。问下列元素的存储地址是什么? ⑴a 0000 ⑵a 1111 ⑶a3125 ⑷a8247 ⑴a 0000 的存储地址是 100 。 ⑵a 1111 的存储地址是 776 。 ⑶a 3125 的存储地址是 1784 。 ⑷a 8247 的存储地址是 4416 。 ⒉设有三对角矩阵An×n,将其三条对角线上的元素存于数组 B[3][n] 中,使得元素 B[u][v]=a ij , 试推导出从(i,j) 到(u,v) 的下标变换公式。 u = i v = {j if i ≤ 2 | j-i+2 if i>2} ⒊假设一个准对角矩阵: a11 a 12 a21 a 22 a33 a 34 a43 a 44 ? . aij a2m-1,2m-1 a 2m-1,2m a2m,2m-1 a 2m,2m 按以下方式存储于一维数组 B[4m] 中: 0 1 2 3 4 5 6 ? k ? 4m-1 4m a 11 a 12 a21 a22 a33 a34 a43 ? aij ? a2m-1,2m a2m,2m-1 a2m,2m 写出由一对下标 (i,j) 求 k 的转换公式。 略 ⒋现有如下的稀疏矩阵 A(如图所示),要求画出以下各种表示方法。 ⑴三元组表示法。 ⑵十字链表法。 0 0 0 22 0 -15 0 13 3 0 0 0 0 0 0 -6 0 0 0 0 0 0 0 0 91 0 0 0 0 0 0 0 28 0 0 0 略 ⒌画出下列广义表的存储结构示意图。 ⑴A=((a,b,c),d,(a,b,c)) ⑵B=(a,(b,(c,d),e),f) 略 ⒍对于二维数组 A[m][n], 其中 m<=80,n<=80 ,先读入 m,n ,然后读该数组的全部元素,对如下三 种情况分别编写相应算法: ⑴求数组 A 靠边元素之和。 ⑵求从 A[0][0] 开始的互不相邻的各元素之和。 ⑶当 m=n 时,分别求两条对角线的元素之和,否则打印 m!=n 的信息。 ⒎ 有 数 组 A[4][4] , 把 1 到 16 个 整 数 分 别 按顺序 放 入 A[0][0]...A[0][3] , A[1][0]...A[1][3] , A[2][0] ...A[2][3] ,A[3][0]...A[3][3] 中,编写一个算法获取数据并求出两条对角线元素的乘积。 int mul (int A[4][4]) { int k=1,s=1; for (i=0; i<4 ;i++) for (j=0 ;j<4 ;j++) { A[i][j] =k; k++; } for (i=0; i<4 ;i++) { s* = A[i][i]; s* = A[i][3-i]; } return(s); } ⒏n 只猴子要选大王,选举办法如下:所有猴子按 1 ,2 ,... ,n 编号围坐一圈,从第1 号开始按 1 、 2、 ... 、m报数,凡报 m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。 n 和 m由键盘输入,打印出最后剩下的猴子号。编写一个算法实现。 typedef struct node{ int data; struct node *next; }Node ,*LkList; void process (int n, int m) { L=new Node; L->data=1; L->next =L; rear =L; for (i=2 ;i<=n ;i++) { s=new Node; s->data=i; s->next=rear->next; rear->next = s; rear = s; } p=L; while (p->next != p) { i=1; while (i<m) { q=p; p=p->next; i++; } q->next=p->next; cout<<p->data<<endl; delete p; p=q->next; } cout<< ”the last monky is : ->da”ta<<epndl; } ⒐假设稀疏矩阵 A 和 B(具有相同的大小 m*n )都采用三元组表示,编写一个算法计算 C=A+B,要求 C 也采用三元组表示。 参见教科书 ⒑假设稀疏矩阵 A 和 B(分别为m*n 和 n*1 矩阵)采用三元组表示,编写一个算法计算 C=A*B ,要 求 C 也是采用稀疏矩阵的三元组表示。 #define SMAX 1024 typedef struct{ int i; int j; datatype v; }SPNode; typedef struct{ SPNode

文档评论(0)

5566www + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6122115144000002

1亿VIP精品文档

相关文档