(1)若有说明:int a[3][4];,则对 a 数组元素的非法引用是( )
A、a[0][2*1]
B、a[1][3]
C、a[4-2][0]
D、a[0][2+2]
答案:D
解析:a[0][4]相当于第一行第5个元素,而a是三行四列的数组,下标最大的元素为a[2][3],即第三行第4个元素;
D 下标从0开始,从0开始,从0开始 重要的事说三遍;
错误的原因在于溢出了。
(2)数组通常具有的两种基本操作是()
A、查找和修改
B、查找和索引
C、索引和修改
D、建立和删除
答案:A
解析:一定要注意,索引表示的是数组的下标,而不是一种操作。
(3)设有一个 10 阶的对称矩阵 A ,采用压缩存储方式,以行序为主存储, a1 , 1 为第一个元素,其存储地址为 1 ,每个元素占 1 个地址空间,则 a8 , 5 的地址为 。
A、13
B、33
C、18
D、40
答案:B
解析:对称矩阵,只需要存一半就行了, 第一行:1个 第二行:2个 第三行:3个 ...以此类推到第七行;
第八行:1~5,前5个 所以:1+2+3+4+5+6+7 再加 5 总共得:33;
需要注意的地方是:需要注意的是,对阵矩阵,以下三角方式存。
(4)稀疏矩阵一般的压缩存储方式有两种,即 。
A、二维数组和三维数组
B、三元组和散列
C、三元组和十字链表
D、散列和十字链表
答案:C
解析:所谓三元组就是一个元素存放三个信息,矩阵中的行号,列号以及值,这样就可以不存放值为0的元素,实现压缩。
十字链表相当于是邻接表和逆邻接表的合集,在一个元素里面存放了值以及出度表和入度表,
这样也不需要像邻接矩阵那样存放大量0元素,而且找一个节点的入节点和找出节点一