习题4
1. 填空题
(1)一般来说,数组不执行(___________)和(___________)操作,所以通常采用(___________)方法来存储数组。通常有两种存储方式:(___________)和(___________)。 答案:删除 插入 顺序存储 行优先存储 列优先存储
(2)设8行8列的二维数组起始元素为A[0][0],按行优先存储到起始元素下标为0的一维数组B中,则元素B[23]在原二维数组中为(___________)。若该二维数组为上三角矩阵,按行优先压缩存储上三角元素到起始元素下标为0的一维数组C中,则元素C[23]即为原矩阵中的(___________)元素。 答案:A[2][7] A[3][5]
(3)设二维数组A为6行8列,按行优先存储,每个元素占6字节,存储器按字节编址。已知A的起始存储地址为1000H,数组A占用的存储空间大小为(___________)字节,数组A的最后一个元素的下标为(___________),该元素的第一个字节地址为(___________)H,元素A[1][4]的第一个字节的地址为(___________)H。(提示:下标从0开始计) 答案:288 A[5][7] 111AH 1048H
(4)设C++中存储三维数组Amnp,则第一个元素为a000,若按行优先存储,则aijk前面共有(___________)个元素;若按列优先存储,则aijk前面共有(___________)个元素。 答案:inp+jp+k i+mj+mnk
(5)常见的稀疏矩阵压缩方法有:(___________)和(___________)。 答案:三元组表 十字链表 (6)广义表((a),((b,c),d),(e))的长度为(___________),表头为(___________),表尾为(___________)。 答案:3 (a) (((b,c),d),(e)) (7)设广义表LS=((a),((b,c),d),(e)),若用取表头操作GetHead()和取表尾操作GetTail()进行组合操作,则取出元素b的运算为(___________)。 答案:GetHead(GetHead(GetHead(GetTail(LS))))
(8)若广义表A满足GetHead(A)=GetTail(A),则A=(___________)。 答案:(())
2. 问答题
(1)根据下面的矩阵,写出矩阵转置后的三元组表,起始行列值为1。
?01290000????0000500???30000140??? ?00130000??01800000????15000000??? Row Col Item 1 1 2 2 3 3 5 6 矩阵行数:7 矩阵列数:6 3 6 1 5 1 4 2 3 -3 15 12 18 9 13 5 14 非零元素个数:8
(2)对于如下稀疏矩阵,请写出对应的三元组顺序表,若采用顺序取,直接存的算法进行转置运算,引入辅助数组number[]和position[],分别表示矩阵各列的非零元素个数和矩阵中各列第一个非零元素在转置矩阵中的位置,请写出数组中的各元素(所有数组起始元素下标为0)。
?0??3 原矩阵 ?0??0?00??000?
0?15??000??2
Row 0 1 2 2 行数:4 列数:4 非零元素个数:4
(3)对于上题中的稀疏矩阵,写出对应的三元组表和十字链表。
Col 2 0 2 3 Item 2 3 -1 5 Col Number[col] Position[col] 0 1 0 1 0 1 2 2 1 3 1 3
三元组表: Row 0 1 2 2 行数:4 列数:4 非零元素个数:4
十字链表:
4410012213Col 2 0 2 3 Item 2 3 -1 5 01022111032222-123530
3. 算法设计
(1)设计上三角矩阵存储类,实现如下接口:
① 对于上三角矩阵A[N][N],可按行优先压缩存储和按列优先压缩存储。
② 对于给定的一维数组B[M],可根据行优先压缩存储或列优先压缩存储还原原始的上三角矩阵。
(2)针对24位真彩色BMP图像文件,编写程序实现如下功能: ① 读取24位真彩色BMP图像文件。
② 将原图像转换为24位灰度图像,并进行保存。转按公式如下: Grey=0.3*Red+0.59*Blue+0.11*Green
③ 将24位灰度图像转换为8位灰度图像,并进行保存。
④ 将8位灰度图像分别进行4-邻域和8-邻域平滑,并分别进行保存。
相关推荐: