数据结构期末复习第五章数组和广义表

 数据结构期末复习第五章 数组和广义表

     二维数组A[m][n]按行优先 寻址计算方法,每个数组元素占据d 个地址单元。
     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((i-1)*n+j-1)*d
     设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( i*n+j )*d
    二维数组A[m][n]按列优先 寻址计算方法,每个数组元素占据d 个地址单元。
     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((j-1)*m+i-1)*d
     设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( j*m+i)*d

 1.  二维数组A的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若A按行先存储,元素A[8,5]的起始地址与当A按列先存储时的元素( B  )的起始地址相同。设每个字符占一个字节。
A. A[8,5]                              B. A[3,10]
C. A[5,8]                              D. A[0,9]

解析:元素A[8,5]的起始地址与当A按列先存储时的A[i,j]元素的起始地址相同,

8×10+5—1=(j一1)×9+i,将四个备选答案代入,可得正确答案

我的理解:

本题中:

二维数组A[9,10]按行优先寻址计算方法,每个元素六个字符,每个数组元素占据4个地址单元,

设数组的基址为LOC(0,1):LOCA(8,5)=LOC(a01)+((8*10)+(5-1))*6*1

二维数组A[9,10]按列优先寻址计算方法,每个元素六个字符,每个数组元素占据4个地址单元,

设数组的基址为LOC(0,1):LOCA(i,j)=LOC(a01)+((j-1)*9+i)*6*1

元素A[8,5]的起始地址与当A按列先存储时的A[i,j]元素的起始地址相同,

即:LOC(8,5)=LOC(i,j)

((8*10)+(5-1))*6*1=((j-1)*9+i)*6*1

     84 *6*1=((j-1)*9+i) *6*1

     84=(j-1)*9+i

将四个备选答案代入,可得正确答案B
2.  二维数组N的每个元素占4个存储单元,行下标i的范围从0到4,列下标j的范围从0到5,N按行存储时元素N[3][5]的起始地址与N按列存储时元素(  B )的起始地址相同。
A. N[2][4]                        B. N[3][4]
C. N[3][5]                        D. N[4][4]

分析:

行下标i的范围从0到4,列下标j的范围从0到5说明数组为二维数组A[5][6]

元素N[3,5]的起始地址与当N按列先存储时元素的起始地址相同,

即3*6+5=j*5+i,将四个备选答案代入,可得正确答案B

具体分析方法同上。
3.  设n阶方阵是一个上三角矩阵,则需存储的元素个数为( D )
A .n                              B .n*n
C .n*n/2                          D .n(n+1)/2

解析:

1 2 3 4 5 6 7 8 ... n

1 1 1 1 1 1 1 1 ... 1  个数为n

0 1 1 1 1 1 1 1 ... 1  个数为n-1

0 0 1 1 1 1 1 1 ... 1  个数为n-2

0 0 0 1 1 1 1 1 ... 1  个数为n-3

     ...                  ...

0 0 0 0 0 0 0 0 ... 1  个数为1

需要存储的元素个数为:
n+(n-1)+...+2+1 = n(n+1)/2

4.  设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85(即该元素下标ij=85)的地址为( B  )。
A. 13             B. 33        C. 18              D. 40

解析:

这里数组下标从1开始,只存储其下三角形元素,在a8,5的前面有7行,第1行有1个元素,第2行有2个元素,…,第7行有7个元素,这7行共有(1+7)×7/2=2 8个元素,在第8行中,a8,5的前面有4个元素,所以,a8,5前有28+4=32个元素,其地址为33。

--------------------------------

1 2 3 4 5 6 7 9 9 3

2 3 4 5 6 7 8 9 3 4

3 4 5 6 7 8 9 3 4 2

4 5 6 7 8 9 3 4 2 6

5 6 7 8 9 3 4 2 6 8

6 7 8 9 3 4 2 6 8 3

7 8 9 3 4 2 6 8 3 4

8 9 3 4 2 6 8 3 4 2

9 3 4 2 6 8 3 4 2 5

3 4 2 6 8 3 4 2 5 6

-----------------------------------------
5.  若对n阶对称矩阵A[1..n,1..n]以行序为主序方式下将其下三角的元素(包括主对角线上的所有元素)依次存放于一维数组B[1..n(n+1)/2]中,则在B中确定aij (i<j)的位置k的关系为( B  )。
A .i*(i-1)/2+j               B .j*(j-1)/2+i     
C .i*(i+1)/2+j               D .j*(j+1)/2+i
解析:

对称矩阵A中的下三角的元素存放于B数组中,

若求aij(i>j)的位置k的关系,答案为A,即i(i一1)/2+j
但是,本题求aij (i<j)这就需要将备选答案A中i(i一1)/2+j的i与j互换

因此正确答案为Bj(j一1)/2+i

原文地址:https://www.cnblogs.com/xingyunblog/p/4229812.html