数据结构-第5章--数组练习题

合集下载

第五章,,华工数据结构试卷资料,电信学院,

第五章,,华工数据结构试卷资料,电信学院,

第五章,,华⼯数据结构试卷资料,电信学院,习题5.1 选择题1、⼀维数组和线性表的区别是( A )。

A、前者长度固定,后者长度可变B、后者长度固定,前者长度可变C、两者长度均固定D、两者长度均可变2、设W为⼀个⼆维数组,其每个数据元素W ij占⽤6个字节,⾏下标i从0到8,列下标j从2到5,则⼆维数组W的数据元素共占⽤(C)个字节。

A、480 B、192 C、216 D、1443、在稀疏矩阵的⾏逻辑链式存储中,每个⾏单链表中的结点都具有相同的( A )。

A、⾏号B、列号C、元素值D、地址4、⼆维数组M的元素是4个字符(每个字符占⼀个存储单元)组成的串,⾏下标i的范围从0到4,列下标j的范围从0到5,M按⾏序存储时元素M[3][5]的起始地址与M按列序存储时的元素()的起始地址相同。

A 、M[2][4] B、M[3][4] C、M[3][5] D、M[4][4]5、稀疏矩阵⼀般的压缩存储⽅法有两种,即(C)。

A、⼆维数组和三维数组B、三元组和散列C、三元组和⼗字链表D、散列和⼗字链表5.2 填空题1、⼀维数组的逻辑结构是(线性表),存储结构是(顺序存储);对于⼆维或多维数组,分为按(⾏序)和(列序)两种不同的⽅式存储。

2、对于⼀个⼆维数组A[m][n],若按⾏序为主序存储,则任⼀元素A[i][j]相对于A[0][0]的地址为(A+(i*m+j)*每个元素所占字节数)。

3、已知⼴义表A=((a,b,c),(d,e,f)),则运算head(tail(tail(A)))=(e)。

4、三维数组R[c1‥d1,c2‥d2,c3‥d3]共含有((d1-c1+1)*(d2-c2+1)*(d3-c3+1))个元素。

(c1≤d1,c2≤d2,c3≤d3)5、⼆维数组A[10‥20][5‥10]以⾏序为主序存储,每个元素占4个存储单元,且A[10][5]的存储地址是1000,则A[18][9]的地址是(1368)。

5.3 应⽤题1、按⾏优先存储⽅式,写出三维数组A[3][2][4]在内存中的排列顺序及地址计算公式(假设每个数组元素占⽤L个字节的内存单元,a[0][0][0]的内存地址为Loc(a[0][0][0]))。

第四、五章串、数组和广义表练习题答案

第四、五章串、数组和广义表练习题答案

第四、五章串、数组和广义表练习题答案一.填空题1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。

2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为3。

3. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。

4. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配成功。

5. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为(n-m+1)*m。

6. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为288 B ;末尾元素A57的第一个字节地址为1282 ;若按行存储时,元素A14的第一个字节地址为(8+4)×6+1000=1072 ;若按列存储时,元素A47的第一个字节地址为(6×7+4)×6+1000)=1276 。

(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A57可知,是从0行0列开始!)7. 〖00年计算机系考研题〗设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为8950 。

答:不考虑0行0列,利用列优先公式:LOC(a ij)=LOC(a c1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L 得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=89508. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。

9.求下列广义表操作的结果:(1)GetHead【((a,b),(c,d))】=== (a, b) ; //头元素不必加括号(2)GetHead【GetTail【((a,b),(c,d))】】=== (c,d) ;(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== b ;(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== (d);10.C语言规定,字符串常量按_字符数组_____处理,它的值在程序的执行过程中是不能改变的。

《刘大有数据结构》 chapter 5 数组字符串和集合类

《刘大有数据结构》 chapter 5 数组字符串和集合类
Loc(A[i][j])= Loc(A[0][0])+ i *n*C + j*C = Loc(A[0][0])+(i * n + j) *C
再例如三维数组 再例如三维数组D[3][3][4],可以把它看作一维 , 数组 B1[3] = { D[0][3][4],D[1][3][4],D[2][3][4] } , ,
下面我们给出一个 下面我们给出一个Array类的应用例子 类的应用例子. 类的应用例子 例5.1 编写一个函数,要求输入一个整数 , 编写一个函数,要求输入一个整数N, 用动态数组A来存放 来存放2~ 之间所有 之间所有5或 的倍数 的倍数, 用动态数组 来存放 ~N之间所有 或7的倍数, 输出该数组. 输出该数组 说明 : 因为 由用户给出 , 编写程序时无法知 说明:因为N由用户给出 由用户给出, 道需要多大的数组来存放数据, 道需要多大的数组来存放数据,因此采用动态 数组(初始时大小为10) 数组(初始时大小为 ),每当数组满时就调 整数组大小,给它增加10个元素 个元素. 整数组大小,给它增加 个元素
数组在内存中一般是以顺序方式存储的 数组在内存中一般是以顺序方式存储的. 设一维数组 设一维数组A[n]存放在 个连续的存储单元中 , 存放在n个连续的存储单元中 存放在 个连续的存储单元中, 每个数组元素占一个存储单元(不妨设为C个 每个数组元素占一个存储单元 ( 不妨设为 个 连续字节) 如果数组元素A[0]的首地址是 , 的首地址是L, 连续字节). 如果数组元素 的首地址是 则 A[1] 的 首 地 址 是 L+C , A[2] 的 首 地 址 是 L+2C,… …,依次类推,对于 0 ≤ i ≤ n 1 有: , ,依次类推,
B[i]={ A[i][0],A[i][1],…,A[i][n-2],A[i][n-1] } -

数据结构(c语言版)第五章答案

数据结构(c语言版)第五章答案

第五章1、设二维数组A【8】【10】是一个按行优先顺序存储在内存中的数组,已知A【0】【0】的起始存储位置为1000,每个数组元素占用4个存储单元,求:(1)A【4】【5】的起始存储位置。

A【4】【5】的起始存储位置为1000+(10*4+5)*4=1180;(2)起始存储位置为1184的数组元素的下标。

起始存储位置为1184的数组元素的下标为4(行下标)、6(列下标)。

2、画出下列广义表D=((c),(e),(a,(b,c,d)))的图形表示和它们的存储表示。

略,参考第5·2节应用题第5题分析与解答。

3、已知A为稀疏矩阵,试从时间和空间角度比较采用两种不同的存储结构(二维数组和三元组表)实现求∑a(i,j)运算的优缺点。

稀疏矩阵A采用二维数组存储时,需要n*n个存储单元,完成求∑ii a(1≤i≤n)时,由于a【i】【i】随机存取,速度快。

但采用三元组表时,若非零元素个数为t,需3t+3个存储单元(t个分量存各非零元素的行值、列值、元素值),同时还需要三个存储单元存储存稀疏矩阵A的行数、列数和非零元素个数,比二维数组节省存储单元;但在求∑ii a(1≤i≤n)时,要扫描整个三元组表,以便找到行列值相等的非零元素求和,其时间性能比采用二维数组时差。

4、利用三元组存储任意稀疏数组时,在什么条件下才能节省存储空间?当m行n列稀疏矩阵中非零元素个数为t,当满足关系3*t<m*n时,利用三元组存储稀疏数组时,才能节省存储空间。

5、求下列各广义表的操作结果。

(1)GetHead((a,(b,c),d))GetHead((a,(b,c),d))=a(2)GetTail((a,(b,c),d))GetTail((a,(b,c),d))=((b,c),d)(3)GetHead(GetTail((a,(b,c),d)))GetHead(GetTail((a,(b,c),d)))=(b,c)(4)GetTail(GetHead((a,(b,c),d)))GetTail(GetHead((a,(b,c),d)))=()第六章1、已知一棵树边的集合为{(i,m),(i,n),(e,i),(b,e),(b,d),(a,b),(g,j),(g,k),(c,g),(c,f),(h,l),(c,h),(a,c)}用树形表示法画出此树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶结点?(3)哪个是g的双亲?(4)哪些是g的祖先?(5)哪些是g的孩子?(6)哪些是e的子孙?(7)哪些是e的兄弟?哪些是f的兄弟?(8)结点b和n的层次号分别是什么?(9)树的深度是多少?(10)以结点c为根的子树的深度是多少?(11)树的度数是多少?略。

数据结构:第5章 数组与广义表1-数组

数据结构:第5章 数组与广义表1-数组

中的元素均为常数。下三角矩阵正好相反,它的主对
数据结构讲义
第5章 数组与广义表
—数组
数组和广义表
数组和广义表可看成是一种特殊的 线性表,其特殊在于,表中的数据 元素本身也是一种线性表。
几乎所有的程序设计语言都有数组 类型。本节重点讲解稀疏矩阵的实 现。
5.1 数组的定义
由于数组中各元素具有统一的类型,并且 数组元素的下标一般具有固定的上界和下 界,因此,数组的处理比其它复杂的结构 更为简单。
nm
aa1221
aa2222
…………....
aam2n2 ………………..
aamm11 aamm22 ………….... aammnn LLoocc(a( iaj)ij=)L=Loco(ca(a111)1+)[+([j(-i1-)1m)n++((i-j1-1)])*]*l l
aa1mn 1 aa2mn2 …………....
其存储形式如图所示:
15137 50800 18926 30251
a00 a10 a 11 a20 a21 a23 ………………..
70613
an-1 0 a n-1 1 a n-1 2 …a n-1 n-1
图 5.1 对称矩阵
在这个下三角矩阵中,第i行恰有i+1个元素,元素总
数为:
n(n+1)/2
5.2 数组的顺序表示和实现
由于计算机的内存结构是一维的,因此用 一维内存来表示多维数组,就必须按某种 次序将数组元素排成一列序列,然后将这 个线性序列存放在存储器中。
又由于对数组一般不做插入和删除操作, 也就是说,数组一旦建立,结构中的元素 个数和元素间的关系就不再发生变化。因 此,一般都是采用顺序存储的方法来表示 数组。

数据结构第五章习题答案

数据结构第五章习题答案

1.二维数组A行下标i的范围从1到12,列下标j的范围从3到10,采用行序为主序存储,每个数据存储元素占用4个存储单元,该数组的首地址(既A[1][3]的地址)为1200,则A[6][5]的地址为(D)A.1400B.1404C.1372D.13682.有一个M*N的矩阵A,若采用行序为主序进行顺序存储,每个元素占用8个字节,则A ij (1≤i≤M,1≤i≤N)元素的相对字节地址(相对首元素地址而言)为(B)A.((i-1)*N+j)*8B.((i-1)*N+j-1)*8C.(i*N+j-1)*8D.((i-1)*N+j+1)*83.稀疏矩阵一般的压缩存储方法有两种,即(D)A.二维数组和三维数组B.三元组和散列C.散列和十字链表D.三元组和十字链表4.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点(B)A.正确B.错误5.广义表((a,b),c,d)的表头是(C),表尾是(D)。

A.aB.bC.(a,b)D.(c,d)6.一个广义表的表头总是广义表,这个断言是(B)A.正确B.错误7.二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元,并且A[0][0]的存储地址是200,则A[6][12]的地址是(326)8.有一个10阶对称矩阵A,采用压缩存储方式(以行序为主存储,且A[0][0]=1),则A[4][3]的地址是(14)9.一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度为(5),深度为(3)10.广义表((a),((b),c),(((d))))的表头是((a)),表尾是((((b),c),(((d)))))11.已知广义表A=((a,b,c),(d,e,f)),则广义表运算head(tail(tail(A)))=(e)12.已知广义表GL=(a,(b,c,d),e),运用head和tail函数取出GL中的原子b的运算是(head(head(tail(GL))))13.特殊矩阵和压缩矩阵哪一种压缩存储后会失去随机存取的功能?为什么?答:稀疏矩阵在进行压缩存储后会失去随机存取的功能,因为非零元素的位置没有办法确定。

数据结构第五章数组习题

数据结构第五章数组习题

第五章数组习题1、假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A、808B、818C、1010D、10202、数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。

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

A、i*(i-1)/2+jB、j*(j-1)/2+iC、i*(i+1)/2+jD、j*(j+1)/2+i4、对稀疏矩阵进行压缩存储目的是()。

A、便于进行矩阵运算B、便于输入和输出C、节省存储空间D、降低运算的时间复杂度5、已知广义表L=((x,y,z), a, (u,t,w)),从L表中取出原子项t的运算是()。

A、head(tail(tail(L)))B、tail(head(head(tail(L))))C、head(tail(head(tail(L))))D、head(tail(head(tail(tail(L)))))6、已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( )。

A、head(tail(LS))B、tail(head(LS))C、head(tail(head(tail(LS)))D、head(tail(tail(head(LS))))7、多维数组之所以有行优先顺序和列优先顺序两种存储方式是因为()。

A、数组的元素处在行和列两个关系中B、数组的元素必须从左到右顺序排列C、数组的元素之间存在次序关系D、数组是多维结构,内存是一维结构8、二维数组M[0..7,0..9]的元素是由4个字符组成的串(每个字符占用1个存储单元),存放M需要存储单元数为()。

数据结构第5章

数据结构第5章

第5章:数组和广义表 1. 了解数组的定义;填空题:1、假设有二维数组A 6×8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A 的起始存储位置(基地址)为1000,则数组A 的体积(存储量)为 288 B ;末尾元素A 57的第一个字节地址为 1282 。

2、三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 行下标 、 列下标 和 元素值 。

2. 理解数组的顺序表示方法会计算数组元素顺序存储的地址;填空题:1、已知A 的起始存储位置(基地址)为1000,若按行存储时,元素A 14的第一个字节地址为 (8+4)×6+1000=1072 ;若按列存储时,元素A 47的第一个字节地址为 (6×7+4)×6+1000)=1276 。

(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A 57可知,是从0行0列开始!) 2、设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为 8950 。

答:不考虑0行0列,利用列优先公式: LOC(a ij )=LOC(a c 1,c 2)+[(j-c 2)*(d 1-c 1+1)+i-c 1)]*L 得:LOC(a 32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=8950选择题:( A )1、假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。

(无第0行第0列元素)A .16902B .16904C .14454D .答案A, B, C 均不对 答:此题(57列×60行+31行)×2字节+10000=16902( B )2、设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素a i,j (i ≤j), 在一维数组B 中下标k 的值是:A .i(i-1)/2+j-1B .i(i-1)/2+jC .i(i+1)/2+j-1D .i(i+1)/2+j3、从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在答卷的对应栏内。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构-第5章--数组练习题
第5章数组
一、选择题
3.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存
放时,元素A[5,8]的存储首地址为(A)。

A.BA+141
B.BA+180
C.BA+222
D.BA+2254.假设以行序为主序存储二维数组
A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=(A)。

A.808B.818C.1010D.10205.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内
存单元中,则元素A[5,5]的地址是()。

1195
A.1175
B.1180
C.1205
D.1210
7.将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组
B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组
中的位置K为()。

供选择的答案:
A.198
B.195
C.1972+64某3=19410.若对n阶对称矩阵A以行序为主序
方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组
B[1..(n(n+1))/2]中,则在B中确定aij(i
A.i某(i-1)/2+j
B.j某(j-1)/2+i
C.i某(i+1)/2+j
D.j某(j+1)/2+i11.设A是n某n的对称矩阵,将A的对角线及对角线上方的元素以列为主的
次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij(1≤i,
j≤n,且i≤j)在B中的位置为(C)。

A.i(i-l)/2+jB.j(j-l)/2+iC.j(j-
l)/2+i-1D.i(i-l)/2+j-112.A[N,N]是对称矩阵,将下面三角(包括对角
线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素
a[i][j]对应T[k]的下标k是(AB)。

A.i(i-1)/2+j
B.j(j-1)/2+i
C.i(j-i)/2+1
D.j(i-1)/2+113.
设二维数组A[1..m,1..n](即m行n列)按行存储在数组B[1..m某n]中,则二维数组元素A[i,j]在一维数组B中的下标为(B)。

A.(i-1)某n+j
B.(i-1)某n+j-1
C.i某(j-1)
D.j某m+i-1
14.有一个100某90的稀疏矩阵,非0元素有10个,设每个整型数
占2字节,则用三元组表示该矩阵时,所需的字节数是(A)。

A.60
B.66
C.18000
D.33三、填空题
2.设二维数组A[-20..30,-30..20],每个元素占有4个存储单元,存
储起始地址为200.如按行优先顺序存储,则元素A[25,18]的存储地址为__(1)_;如按列优先顺序存储,则元素A[-18,-25]的存储地址为__(2)_。

3.设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,
若以行序为主序顺序存储,则元素a[45,68]的存储地址为_(1)_;若以
列序为主序顺序存储,则元素a[45,68]的存储地址为_(2)_。

4.将整型数组A[1..8,1..8]按行优先次序存储在起始地址为1000
的连续的内存单元中,则元素A[7,3]的地址是:_______。

6.设有二维数组A[0..9,0..19],其每个元素占两个字节,第一个元
素的存储地址为100,若按列优先顺序存储,则元素A[6,6]存储地址为
_______。

7.已知数组A[0..9,0..9]的每个元素占5个存储单元,将其按
行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[6,8]的地址为_______。

8.已知二维数组A[1..10,0..9]中每个元素占4个单元,在按行优
先方式将其存储到起始地址为1000的连续存储区域时,A[5,9]的地址是:_______。

11.设n行n列的下三角矩阵A已压缩到一维数组B[1..n某(n+1)
/2]中,若按行为主序存储,则A[i,j]对应的B中存储位置为_______。

13.己知三对角矩阵A【1..9,1..9】的每个元素占2个单元,现将
其三条对角线上的元素逐行存储在起始地址为1000的连续的内存单元中,则元素A[7,8]的地址为______。

14.设有一个10阶对称矩阵A采用压缩存储方式(以行为主序存储:
a11=1),则a85的地址为_______。

15.所谓稀疏矩阵指的是_______。

16.对矩阵压缩是为了_______。

17.上三角矩阵压缩的下标对应关系为:_______。

18.假设一个15阶的上三角矩阵A按行优先顺序压缩存储在一维数组
B中,则非零元素A9,9在B中的存储位置k=_______。

(注:矩阵元素下
标从1开始)a11a21a31..19.设下三角矩阵
A=an1a22a32..an2a33..........ann
如果按行序为主序将下三角元素Aij(i,j)存储在一个一维数组
B[1..n(n+1)/2]中,对
任一个三角矩阵元素Aij,它在数组B中的下标为_______。

相关文档
最新文档