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

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

二维数组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互换,

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

时间: 2024-10-12 09:16:27

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

数据结构与算法系列研究四——数组和广义表

稀疏矩阵的十字链表实现和转置 一.数组和广义表的定义 数组的定义1:一个 N 维数组是受 N 组线性关系约束的线性表.           二维数组的逻辑结构可形式地描述为:           2_ARRAY(D,R)              其中 D={aij} | i=0,1,...,b1-1; j=0,1,...,b2-1;aij∈D0}              R={Row,Col}              Row={<aij,ai,j+1>|0<=i<=b1-1;

数据结构(C语言第2版)-----数组,广义表,树,图

任何一个算法的设计取决于选定的数据结构,而算法的实现依赖于采用的存储结构. 之前线性表的数据元素都是非结构的原子类型,元素的值是不可再分的.下面学习的这两个线性表是很特殊的,其中数据元素本身也可能是一种数据结构. 认识数组和广义表 数组可以看成是一种特殊的线性表,也就是线性表中的数据元素本身也是一个线性表,数组中的个元素具有统一的类型.其实说白了就是在脑海中想数组中的数据如何在内存中以什么形式的线性表来存储.在C语言中,一个二维数组可以定义为其分量类型为一维数组类型的一维数组类型. 数组一旦被建

【数据结构】第5章 数组和广义表

§5.1 数组的定义 多维数组的理解 typedef ElemType Array2[m][n]; //等价于typedef ElemType Array1[n];typedef Array1 Array2[m]; 即一个n维数组类型可以定义为其数据元素为(n-1)维数组类型的一维数组类型. 数组一旦被定义,它的维度和维界就不再改变,因此除了结构的初始化和销毁之外,数组只有存取元素和修改元素值的操作. §5.2数组的顺序表示和实现 多维数组的空间分配,有以列序为主序(FORTRAN)或以行序为主

数据结构期末复习第三章栈和队列

第三章:栈和队列 栈的特性:后进先出(LIFO) 1.  输入序列为ABC,可以变为CBA时,经过的栈操作为( B )A. push, pop, push, pop, push, popB. push, push, push, pop, pop, popC. push, push, pop, pop, push, popD. push, pop, push, push, pop, pop 解析: ABC经过push,push,push操作后,从栈顶到栈底元素为CBA,经过pop,pop,pop出

数据结构期末复习第六章树和二叉树

知识点: 先序遍历二叉树规则:根-左-右 1.访问根结点 2.先序遍历左子树 3.先序遍历右子树 中序遍历二叉树规则:左-根-右 1.先中序遍历左子树 2.再访问根节点 3.最后访问中序遍历右子树 后序遍历二叉树规则:左-右-根 1.后序遍历左子树 2.后序遍历右子树 3.访问根结点 1.  一棵二叉树的先序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历结果为(A)A. CBEFDA                       B. FEDCBAC. CBEDFA        

数据结构期末复习(三)

数据结构期末复习(三) 数组的存储结构 二维数组的顺序存储结构分为以行序为主序的存储方式和以列序为主序的存储方式. 以行序为主的存储方式就是常规的先存第0行的每列,再存第一行的每列,以此类推.以列为主的存储方式同理. 对于三维数组来说,按下标从左到右的顺序存储.例如,设a[0][0][0]的地址为p,则对于数组a[m][n][r],a[i][j][k] = p + (i*n*r + j*r + k)*l; 稀疏矩阵 三元组顺序表 转置函数最简单的方法就是row和col对应的值交换,并且row和c

数组和广义表-第5章-《数据结构题集》答案解析-严蔚敏吴伟民版

习题集解析部分 第5章 数组和广义表 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       本习题文档的存放目录:数据结构\▼配套习题解析\▼05 数组和广义表       文档中源码的存放目录:数据结构\▼配

5-5-广义表(头尾链表存储表示)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第5章  数组和广义表 - 广义表(头尾链表存储表示) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.SequenceString.c    

5-6-广义表(扩展线性链表存储表示)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第5章  数组和广义表 - 广义表(扩展线性链表存储表示) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.SequenceString.c