矩阵 - 习题
二维数组 A 的元素是 6 个字符组成的串,行下标 i 的范围从 0 到 8,列下标 j 的范围从 1 到 10。从供选择的大难中选出应填入下列关于数组存储的描叙述中 ( ) 内的正确答案
(1) 存放 A 至少需要 ( ) 个字节
(2) A 的第 8 列和第 5 行共占 ( ) 个字节
(3) 若 A 按行存放,元素 A[8, 5] 的起始地址与 A 按列存放时的元素 ( ) 的起始地址一致
(1) A. 90 B. 180 C. 240 D. 270 E. 540
(2) A. 108 B. 114 C. 54 D. 60 E. 150
(3) A. A[8, 5] B. A[3, 10] C. A[5, 8] D. A[0, 9]
解:
- E, A, B
- (2) 中横竖加起来中间有一块是交叉区域重复需要减掉一次
数组通常具有的两种基本操作是 ( )
A. 查找和修改 B. 查找和索引 C. 索引和修改 D. 建立和删除
解: 数组定长只能查找和修改不能插入删除,故选 A
稀疏矩阵的三元组存储方法 ( )
A. 实现转置运算很简单,只需将每个三元组的行标和列标交换
B. 是一种链式存储方法
C. 矩阵的非零元素个数和位置在操作过程中变化不大时较有效
D. 比十字链表法更高效
解:
- 在矩阵的三元组中,元素的排列是有规则的,规则为先行后列。所以在将数组的 行下标与列下标的值互换,并把m和n的值互换后,还需要重排三元组间的次序,这样才能实现矩阵的转置,A 错误。三元组是顺序存储,十字链表是链式存储,B 错误。选 C
有一个 100*90 的稀疏矩阵,非 0 元素有 10 个,设每个整型数占 2 字节,则用三元组表示该矩阵时,所需字节数是 ( )
A. 60 B. 60 C. 18000 D. 33
解:
- 三元组的每个元素包括行值,列值和元素值,每个非零元素占 23 个字节,10 个非零元素占 610 字节。此外,还一般要用三个整数来存储矩阵的行数、列数和总元素个数,又需要3*2 个字节,故选 B
用数组 r 存储静态链表,结点的 next 域指向后继,工作指针 j 指向链中结点,使 j 沿链移动的操作为 ( )
A. j = r[j].next B. j = j + 1 C. j = j->next D. j = r[j]->next
解:
- 首先链表的下一个结点应该用 next 指针访问,排除B,当前结点是 r[j],可以排除 C。当结构体中next是结构体指针类型则 c/c++ 访问是需要用结构体类型 ->next 来访问,如果不是指针类型,而是结构体类型就应该用,结构体名 .next 来访问,故选 A
数组是一种线性结构,因此只能用来存储线性表 ( )
解:
- 错。数组是一个线性结构,可以存的数据结构很多,只要不是动态链表就行。比如,线性表,栈,队列,静态链表,完全二叉树都可,只要是挨着排列,这样效率好
数组不适合作为任何二叉树的存储结构 ( )
解:
- 错。二叉树的顺序存储就是利用数组实现的,也就是用一组连续的存储单元存放二叉树中的结点。依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映出结点之间的逻辑关系,这样既能够最大可能地节省存储空间,又可以利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系。
稀疏矩阵压缩存储后,必会失去随机存取功能 ( )
解:
- 对。稀疏矩阵在采用压缩存储后将会失去随机存储的功能。因为在这种矩阵中,非零元素的分布是没有规律的,为了压缩存储,就将每一个非零元素的值和它所在的行、列号做为一个结点存放在一起,这样的结点组成的线性表中叫三元组表,它已不是简单的向量,所以无法用下标直接存取矩阵中的元素。
若一个广义表的表头为空表,则此广义表亦为空表 ( )
解:
- 广义表 ( ) 和 (( )) 不同,前者是长度为 0 的空表,对其不能做求表头和表尾的运算;而后者是长度为 1 的非空表,对其可进行分解,得到的表头和表尾均为空表 ( )

浙公网安备 33010602011771号