数据结构 第五章数组和广义表

第五章 数组和广义表

计算题

知识点

  1. 明确数组数据结构的特点,掌握数组地址计算方法,了解几种特殊矩阵的压缩存储方法。

数组

  1. 数组的数据结构特点

    • 数组既可以是顺序的,也可以是链式结构,用户可根据需要选择。
  2. 数组地址计算方法

  3. 特殊矩阵的压缩存储方式

    1. 什么是压缩存储?
      • 若多个数据元素的值都相同,则只分配一个元素值的存储空间,且零元素不占存储空间。
    2. 什么样的矩阵能够压缩?
      • 一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。
    3. 什么叫稀疏矩阵?
      • 矩阵中非零元素的个数较少(一般小于5%)
    4. 例子
      • 对称矩阵
  4. 掌握广义表的定义、性质及其GetHead和GetTail的操作。

广义表

  1. 广义表的定义

  2. 广义表的数据结构特点

    • 广义表的成分可以是单元素,也可以是有结构的表

    • 广义表不一定是线性表,也不一定是线性结构

    • 有次序性 一个直接前驱和一个直接后继

    • 有长度 = 表中元素个数

    • 有深度 = 表中括号的重数

    • 可递归 自己可以作为自己的子表

    • 可共享 可以为其他广义表所共享

  3. GetHead和GetTail

    • 求表头GetHead(L):
      非空广义表的第一个元素,可以是一个单元素,也可以是一个子表

    • 求表尾GetTail(L):
      非空广义表除去表头元素以外其它元素所构成的表。表尾一定是一个表

习题

  1. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址,已知A的起始存储位置(基地址)为1000,计算:
    (1) 数组A的体积(即存储量);
    (2) 数组A的最后一个元素a57的第一个字节的地址;
    (3) 按行存储时,元素a14的第一个字节的地址;
    (4) 按列存储时,元素a47的第一个字节的地址。

答案

1. 6*8*6 = 288

2. 1282

3. 1072

4. 1276
  1. 假设按低下标优先存储整数数组A9×3×5×8时,第一个元素的字节地址是100,每个整数占四个字节。问下列元素的存储地址是什么?

(1) a0000
(2) a1111
(3) a3125
(4) a8247

答案

1. 100

2. 100 + 4 * (1*3*5*8 + 1*5*8 + 1*8 + 1) = 776

3. 100 + 4 * (3*3*5*8 + 1*5*8 + 2*8 +5) = 1784

4. 100 + 4 * (8*3*5*8 + 2*5*8 + 4*8 + 7) = 4416
  1. 假设一个准对角矩阵
    按以下方式存于一维数组B[4m]中:
0 1 2 3 4 k 4m-2 4m-1
a11 a12 a21 a22 aij a2m,2m-1 a2m,2m

写出由一对下标(i,j)求k的转换公式。

答案

i为奇数时 k=i+j-2

i为偶数时 k=i+j-1

合写为一个公式为:k=i+j-(i%2)-1

你可能感兴趣的:(数据结构 第五章数组和广义表)