当前位置:文档之家› 第五章数组和广义表习题_数据结构

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

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

习题五数组和广义表

一、单项选择题

1.常对数组进行的两种基本操作是()

A.建立与删除

B. 索引与修改

C. 查找与修改

D. 查找与索引2.对于C语言的二维数组DataType A[m][n],每个数据元素占K个存储单元,二维数组中任意元素a[i,j] 的存储位置可由( )式确定.

A.Loc[i,j]=A[m,n]+[(n+1)*i+j]*k

B.Loc[i,j]=loc[0,0]+[(m+n)*i+j]*k

C.Loc[i,j]=loc[0,0]+[(n+1)*i+j]*k

D.Loc[i,j]=[(n+1)*i+j]*k

3.稀疏矩阵的压缩存储方法是只存储 ( )

A.非零元素

B. 三元祖(i,j, aij)

C. aij

D. i,j

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

A. 1175

B. 1180

C. 1205

D. 1210

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

A. i(i-1)/2+j

B. j(j-1)/2+i

C. i(j-i)/2+1

D. j(i-1)/2+1

7. 对稀疏矩阵进行压缩存储目的是()。

A.便于进行矩阵运算 B.便于输入和输出

C.节省存储空间 D.降低运算的时间复杂度

8. 已知广义表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))))

9. 广义表((a,b,c,d))的表头是(),表尾是()。

A. a

B.()

C.(a,b,c,d)

D.(b,c,d)

10. 设广义表L=((a,b,c)),则L的长度和深度分别为()。

A. 1和1

B. 1和3

C. 1和2

D. 2和3

11. 下面说法不正确的是( )。

A. 广义表的表头总是一个广义表

B. 广义表的表尾总是一个广义表

C. 广义表难以用顺序存储结构

D. 广义表可以是一个多层次的结构

二、填空题

1.通常采用___________存储结构来存放数组。对二维数组可有两种存储方法:一种是以___________为主序的存储方式,另一种是以___________为主序的存储方式。

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

4. 所谓稀疏矩阵指的是_ 。

5. 广义表简称表,是由零个或多个原子或子表组成的有限序列,原子与表的差别仅在于____ 。为了区分原子和表,一般用 ____表示表,用 _____表示原子。一个表的长度是指 __,而表的深度是指__ __

6.设广义表L=((),()), 则head(L)是;tail(L)是;L的长度是;深度是 __。

三、应用题

1. 数组A[1..8,-

2..6,0..6]以行为主序存储,设第一个元素的首地址是78,每个元素的长度为4,试求元素A[4,2,3]的存储首地址。

2. 特殊矩阵和稀疏矩阵哪一种压缩存储后失去随机存取的功能?为什么?

3. 数组,广义表与线性表之间有什么样的关系?

4. 设有三对角矩阵(a ij)n*n,将其三条对角线上的元素逐行地存于数组B(1:3n-2)中,使得

B[k]=a ij,求:

(1)用i,j表示k的下标变换公式;

(2)用k表示i,j的下标变化公式。

5.画出下面广义表的头尾链表存储结构图示:

((((a), b)), ((( ), d), (e, f)))

6.求下列广义表运算的结果:

(1)HEAD[((a,b),(c,d))];

(2)TAIL[((a,b),(c,d))];

(3)TAIL[HEAD[((a,b),(c,d))]];

(4)HEAD[TAIL[HEAD[((a,b),(c,d))]]];

(5)TAIL[HEAD[TAIL[((a,b),(c,d))]]];

7. 利用广义表的Head和Tail运算,把原子d分别从下列广义表中分离出来,L1=(((((a),b),d),e));L2=(a,(b,((d)),e))。

第5章数组和广义表

一、单项选择题

1. C

2. C

3. A

4. A

5. B

6. A

7. C

8. C

9. C

10. C

11. A

二、填空题

1.顺序、列序、行序

2. 第1行第3列

3.i(i-1)/2+j (1<=i,j<=n)

4. 非零元很少(t<

5.(1)原子(单元素)是结构上不可再分的,可以是一个数或一个结构;而表带结构,本质就是广义表,因作为广义表的元素故称为子表。

(2)大写字母(3)小写字母(4)表中元素的个数(5)表展开后所含括号的层数6.(1)()(2)(())(3)2 (4)2

7. col<=a.nu, a.data[p].j, q++

8. (1)(p->tag==0) //处理原子

(2)h=reverse(p->val.ptr.hp) //处理表头

(3)(p->val.ptr.tp) //产生表尾的逆置广义表

(4)s->val.ptr.tp=t; //连接

(5)q->val.ptr.hp=h //头结点指向广义表

三、应用题

1. 958 三维数组以行为主序存储,其元素地址公式为:

LOC(A ijk)=LOC(A c1c2c3)+[(i-c1)V2V3+(j-c2)V3+(k-c3)]*L+1

其中c i,d i是各维的下界和上界,V i=d i-c i+1是各维元素个数,L是一个元素所占的存储单元数。

2. 特殊矩阵指值相同的元素或零元素在矩阵中的分布有一定规律,因此可以对非零元素分配单元(对值相同元素只分配一个单元),将非零元素存储在向量中,元素的下标i和j和该元素在向量中的下标有一定规律,可以用简单公式表示,仍具有随机存取功能。而稀疏矩阵是指非零元素和矩阵容量相比很小(t<

3. 数组是具有相同性质的数据元素的集合,同时每个元素又有唯一下标限定,可以说数组

是值和下标偶对的有限集合。n维数组中的每个元素,处于n个关系之中,每个关系都是线性的,且n维数组可以看作其元素是n-1维数组的一个线性表。广义表中的元素,可以是原子,也可以是子表,即广义表是原子或子表的有限序列,满足线性结构的特性:在非空线性结构中,只有一个称为“第一个”的元素,只有一个成为“最后一个”的元素,第一元素有后继而没有前驱,最后一个元素有前驱而没有后继,其余每个元素有唯一前驱和唯一后继。从这个意义上说,广义表属于线性结构。

4. 三对角矩阵第一行和最后一行各有两个非零元素,其余每行均有三个非零元素,所以共有3n-2个元素。

(1)主对角线左下对角线上的元素下标间有i=j+1关系,k与i和j的关系为k=3(i-1);主对角线上元素下标间有关系i=j,k与i和j的关系为k=3(i-1)+1; 主对角线右上那条对角线上元素下标间有关系i=j-1,k与i和j的关系为k=3(i-1)+2。综合以上三等式,有k=2(i-1)+j (1<=i,j<=n, |i-j|<=1)

(2)i=k/3+1;(1≤k≤3n-2) // k/3取小于k/3的最大整数。下同

j=k-2(i-1)=k-2(k/3)=k%3+k/3

5.

第一种存储结构

6.

(1)HEAD[((a,b),(c,d))]; (a,b)

(2)TAIL[((a,b),(c,d))]; ((c,d))

(3)TAIL[HEAD[((a,b),(c,d))]]; (b)

(4)HEAD[TAIL[HEAD[((a,b),(c,d))]]]; b

(5)TAIL[HEAD[TAIL[((a,b),(c,d))]]]; (d)

7. Head(Tail(Head(Head(L1))))

Head(Head(Head(Tail(Head(Tail(L2))))))

第五章 数组和广义表

第五章数组和广义表 一.选择题 1.在二维数组A 中引用A[i,j]的时间_________。 A.与i、j的大小有关 B.与i、j的大小无关 C.与i的大小有关,与j的大小无关 D.与i的大小无关,与j的大小有关 2.在稀疏矩阵的带行指针向量的链接存储中,每一行单链表中的结点都具有相同的________。 A.行号 B.列号 C.元素值 D.地址 3.二维数组A 按行顺序存储,其中每个元素占1个存储单元。若 A[1][1]的存储地址为420, A[3][3]的存储地址为446,则A[5][5]的存储地址为_______。A.470 B.471 C.472 D. 473 4.在稀疏矩阵的十字链接存储中,每个列单链表中的结点都具有相同的_____。A.行号 B.列号 C.元素值 D.地址 5.下面的说法中,不正确的是________。 A.对称矩阵中只须存放包括主对角线元素在内的下(或上)三角部分的元素即可B.对角矩阵中只须存放的非零元素即可 C.稀疏矩阵中值为零的元素较多,因此可以采用三元组表方法存储 D.稀疏矩阵中大量值为零的元素分布有规律,因此可以采用三元组表方法存储6.对一些特殊矩阵采用压缩存储的目的主要是为了________。 A.表达变得简单 B.对矩阵元素的存取变得简单 C.去掉矩阵中的多余元素 D.减少不必要的存储空间的开销 7.若将n 阶对称矩阵 A 按照行序为主序方式将包括主对角线元素在内的下三角形的所有元素依次存放在一个一维数组 B 中,则该对称矩阵在 B 中占用了________个数组元素。 A.n2 B.n*(n-1) C.n*(n+1)/2 D.n*(n-1) 8. 稀疏矩阵的三元组顺序表表示的一个三元组中不包括________。 A. 行号 B.列号 C.元素值 D.元素总数 9.稀疏矩阵一般的压缩存储方法有两种,即________。 A.二维数组和三维数组 B.三元组和散列 C. 三元组和十字链表 D.散列和十字链表 10.有一个 10 阶对称矩阵 A,采用压缩存储方式(以行序为主存储,且A[0 Ⅱ0]=1),则A[8][5]的地址是________。 A.52 B.48 C.54 D.53 11.数组通常具有的两种基本操作是________。 A.建立与删除 B.索引和修改 C.查找和修改 D.查找与索引12.二维数组M 的成员是 6 个字符(每个字符占一个存储单元)组成的串,行下标 i 的范围从0 到 8,列下标j 的范围从1到10,则存放M 至少需要________个字节。 A.90 B.180 C.240 D.540 13.二维数组M 的元素是4 个字符(每个字符占一个存储单元)组成的串,行下标 i 的范围从0 到 4 ,列下标j 的范围从0 到 5,M 按行存储时元素M[3 Ⅱ5]的起始地址与M 按列存储时元素________的起始地址相同。

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

第五章数组和广义表:习题 习题 一、选择题 1.假设以行序为主序存储二维数组A[1..100,1..100],设每个数据元素占两个存储单元,基地址为10,则LOC(A[5,5])=( )。 A. 808 B. 818 C. 1010 D. 1020 2.同一数组中的元素( )。 A. 长度可以不同B.不限C.类型相同 D. 长度不限 3.二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10。从供选择的答案中选出应填入下列关于数组存储叙述中( )内的正确答案。 (1)存放A至少需要( )个字节。 (2)A的第8列和第5行共占( )个字节。 (3)若A按行存放,元素A[8]【5]的起始地址与A按列存放时的元素( )的起始地址 一致。 供选择的答案: (1)A. 90 B. 180 C. 240 D. 270 (2) A. 108 B. 114 C. 54 D. 60 (3)[8][5] B. A[3][10] [5][8] [O][9] 4.数组与一般线性表的区别主要是( )。 A.存储方面 B.元素类型方面 C.逻辑结构方面 D.不能进行插入和删除运算 5.设二维数组A[1..m,1..n]按行存储在数组B[1..m×n]中,则二维数组元素A[i,j]在一维数组B中的下标为( )。 A. (i-l)×n+j B. (i-l)×n+j-l C.i×(j-l) D. j×m+i-l 6.所谓稀疏矩阵指的是( )。 A.零元素个数较多的矩阵 B.零元素个数占矩阵元素中总个数一半的矩阵 C.零元素个数远远多于非零元素个数且分布没有规律的矩阵 D.包含有零元素的矩阵 7.对稀疏矩阵进行压缩存储的目的是( )。 A.便于进行矩阵运算 B.便于输入和输出 C.节省存储空间 D. 降低运算的时间复杂度 8.稀疏矩阵一般的压缩存储方法有两种,即( )。 A.二维数组和三维数组 B.三元组和散列 C.三元组和十字链表 D.散列和十字链表 9.有一个100×90的稀疏矩阵,非0元素有10个,设每个整型数占两字节,则用三元组表示该矩阵时,所需的字节数是( )。 A. 60 B. 66 C.18000 D.33 10. A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+I)/2] 中,则对任一上三角元素a[i][j]对应T[k]的下标k是( )。 A. i(i-l)/2+j B. j(j-l)/2+i C. i(j-i)/2+1 D. j(i-l)/2+1 11.已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出原子项t的运算是( ) A. head(tail(tail(L))) B. tail(head(head(taiI(L)))) C. head(tail(head(taiI(L)))) D. head(tail(head(tail(tail(L)))))

(完整word版)数据结构第五章数组和广义表习题及答案

习题五数组和广义表 一、单项选择题 1.常对数组进行的两种基本操作是() A.建立与删除 B. 索引与修改 C. 查找与修改 D. 查找与索引2.对于C语言的二维数组DataType A[m][n],每个数据元素占K个存储单元,二维数组中任意元素a[i,j] 的存储位置可由( )式确定. A.Loc[i,j]=A[m,n]+[(n+1)*i+j]*k B.Loc[i,j]=loc[0,0]+[(m+n)*i+j]*k C.Loc[i,j]=loc[0,0]+[(n+1)*i+j]*k D.Loc[i,j]=[(n+1)*i+j]*k 3.稀疏矩阵的压缩存储方法是只存储 ( ) A.非零元素 B. 三元祖(i,j, aij) C. aij D. i,j 4. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。 A. 1175 B. 1180 C. 1205 D. 1210 5. A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。 A. i(i-1)/2+j B. j(j-1)/2+i C. i(j-i)/2+1 D. j(i-1)/2+1 6. 用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j 沿链移动的操作为( )。 A. j=r[j].next B. j=j+1 C. j=j->next D. j=r[j]-> next 7. 对稀疏矩阵进行压缩存储目的是()。 A.便于进行矩阵运算 B.便于输入和输出 C.节省存储空间 D.降低运算的时间复杂度 8. 已知广义表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)))) 9. 广义表((a,b,c,d))的表头是(),表尾是()。 A. a B.() C.(a,b,c,d) D.(b,c,d) 10. 设广义表L=((a,b,c)),则L的长度和深度分别为()。 A. 1和1 B. 1和3 C. 1和2 D. 2和3 11. 下面说法不正确的是( )。 A. 广义表的表头总是一个广义表 B. 广义表的表尾总是一个广义表 C. 广义表难以用顺序存储结构 D. 广义表可以是一个多层次的结构 二、填空题 1.通常采用___________存储结构来存放数组。对二维数组可有两种存储方法:一种是以___________为主序的存储方式,另一种是以___________为主序的存储方式。 2. 用一维数组B与列优先存放带状矩阵A中的非零元素A[i,j] (1≤i≤n,i-2≤j≤i+2),B 中的第8个元素是A 中的第_ _行,第_ _列的元素。

数组与广义表的算法的实验报告

数组与广义表的算法 实验工具:visual C++ 实验容:1、三元组表示稀疏矩阵的转置算法(一般&快速)<1-7页> 2、稀疏矩阵乘法、加法的算法(一般&十字链表)<8-21页> 3、广义表的各种算法<22-28页> 体验:通过利用visual C++实验工具,实现数组与广义表各类算法的过程中,本人对数组与广义表的知识有了更深的了解,而且认识到数组与广义表各类操作可由形式多样的算法结构实现。算法并非统一标准的,同样的结果可有多种算法得出,算法的编写鼓励创造性思维。 1、三元组表示稀疏矩阵的转置算法(一般&快速) 代码: #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW 0 #define MAXSIZE 100 #define MAXRC 100 typedef int ElemType; typedef struct { int i,j; ElemType e; }Triple; typedef struct { Triple data[MAXSIZE+1]; //非零元三元组 int rpos[MAXRC+1]; //各行第一个非零元的位置表 int mu,nu,tu; //矩阵的行数、列数和非零元个数 }RLSMatrix; CreateSMatrix(RLSMatrix &M) //创建稀疏矩阵M { int i,m,n; ElemType e; int k,j; printf("输入矩阵的行数、列数、非零元的个数:"); scanf("%d%d%d",&M.mu,&M.nu,&M.tu); M.data[0].i=0;

习题2参考答案及数组广义表习题

习题2参考答案 一、单项选择题 1.A 2.A 3.D 4.C 5.D 6.A 7.B 8.B 9.C 10.A 11.D 12.B 13.C 14.B 15.C 16.C 17.B 18.D 19.C 20.A 二、填空题 1.线性 2.n-i+1 3.相邻 4.前移,前,后 5.物理存储位置,链域的指针值 6.前趋,后继 7.顺序,链接 8.一定,不一定 9.线性,任何,栈顶,队尾,队头 10.单链表,双链表,非循环链表,循环链表 11.使空表和非空表统一;算法处理一致 12.O(1),O(n) 13.栈满,栈空,m,栈底,两个栈的栈顶在栈空间的某一位置相遇 14.2、3 15.O(1) 三、简答题 1.头指针是指向链表中第一个结点(即表头结点)的指针;在表头结点之前附设的结点称为头结点;表头结点为链表中存储线性表中第一个数据元素的结点。若链表中附设头结点,则不管线性表是否为空表,头指针均不为空,否则表示空表的链表的头指针为空。 2.线性表具有两种存储结构即顺序存储结构和链接存储结构。线性表的顺序存储结构可以直接存取数据元素,方便灵活、效率高,但插入、删除操作时将会引起元素的大量移动,因而降低效率:而在链接存储结构中内存采用动态分配,利用率高,但需增设指示结点之间关系的指针域,存取数据元素不如顺序存储方便,但结点的插入、删除操作较简单。 3.应选用链接存储结构,因为链式存储结构是用一组任意的存储单元依次存储线性表中的各元素,这里存储单元可以是连续的,也可以是不连续的:这种存储结构对于元素的删除或插入运算是不需要移动元素的,只需修改指针即可,所以很容易实现表的容量的扩充。 4.应选用顺序存储结构,因为每个数据元素的存储位置和线性表的起始位置相差一个

第 5 章 数组和广义表答案

第 5 章数组和广义表 一、选择 1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存 储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则 a85的地址为( B )。 A. 13 B. 33 C. 18 D. 40 2. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到 8 ,j的值为1 到10,数组从内存首地址BA开始顺序存放,当用以 列为主存放时,元素A[5,8]的存储首地址为(B )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 3. 假设以行序为主序存储二维数组A=array[1..100,1..100],设 每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=( B )。 A. 808 B. 818 C. 1010 D. 1020 4. 二维数组A的元素都是6个字符组成的串,行下标i的范围从0 到8,列下标j的范围从0到9。从供选择的答案中选出应填入下列 关于数组存储叙述中()内的正确答案。 (1)存放A至少需要( E )个字节; (2)A的第8列和第5行共占( A )个字节; (3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元 素( B )的起始地址一致。 供选择的答案: (1)A. 90 B. 180 C. 240 D. 270 E. 540

(2)A. 108 B. 114 C. 54 D. 60 E. 150 (3)A. A[8,5] B. A[4,9] C. A[5,8] D. A[0,9] 5. 若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括 主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中, 则在B中确定aij(i

数据结构(C语言版)第5章 数组和广义表

第 5 章数组和广义表 一、选择题 为第一元素,其 1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a 11 的地址为()。【燕山大学 2001 一、2 存储地址为1,每个元素占一个地址空间,则a 85 (2分)】 A. 13 B. 33 C. 18 D. 40 2. 有一个二维数组A[1:6,0:7] 每个数组元素用相邻的6个字节存储,存储器按字节编址, 那么这个数组的体积是(①)个字节。假设存储数组元素A[1,0]的第一个字节的地址是0, 则存储数组A的最后一个元素的第一个字节的地址是(②)。若按行存储,则A[2,4]的第 一个字节的地址是(③)。若按列存储,则A[5,7]的第一个字节的地址是(④)。就一般情 况而言,当(⑤)时,按行存储的A[I,J]地址与按列存储的A[J,I]地址相等。供选择的 答案:【上海海运学院 1998 二、2 (5分)】 ①-④: A.12 B. 66 C. 72 D. 96 E. 114 F. 120 G. 156 H. 234 I. 276 J. 282 K. 283 L. 288 ⑤: A.行与列的上界相同 B. 行与列的下界相同 C. 行与列的上、下界都相同 D. 行的元素个数与列的元素个数相同 3. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到8 ,j的值为1 到10, 数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 【南京理工大学 1997 一、8 (2分)】 4. 假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存 储单元,基地址为10,则LOC[5,5]=()。【福州大学 1998 一、10 (2分)】 A. 808 B. 818 C. 1010 D. 1020 5. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000 的内存单元中,则元素A[5,5]的地址是( )。【南京理工大学 2001 一、13 (1.5分)】 A. 1175 B. 1180 C. 1205 D. 1210 6. 有一个二维数组A[0:8,1:5],每个数组元素用相邻的4个字节存储,存储器按字节编址, 假设存储数组元素A[0,1]的第一个字节的地址是0,存储数组A的最后一个元素的第一个字 节的地址是(①)。若按行存储,则A[3,5]和 A[5,3]的第一个字节的地址是(②) 和(③)。若按列存储,则A[7,1]和A[2,4]的第一个字节的地址是(④)和(⑤)。【上海海运学院 1996 二、1 (5分)】 ①-⑤:A.28 B.44 C.76 D.92 E.108 F.116 G.132 H.176 I.184 J.188 7. 将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元 (即该元素下标i=66,j=65),在B数组中的位置K为()。供选择的答案: 素A 6665 A. 198 B. 195 C. 197 【北京邮电大学 1998 二、5 (2分)】 8. 二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈 从1到10。从供选择的答案中选出应填入下列关于数组存储叙述中()内的正确答案。(1)存放A至少需要()个字节; (2)A的第8列和第5行共占()个字节; (3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元素()的起始地

数据结构复习题 答案 新编新

第5章数组与广义表 一、选择题(每小题1分,共10分) 1.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( A )。 A.110 B.108 C.100 D.120 2.在数组A中,每一个数组元素A[i][j]占用3个存储字节,行下标i从1到8,列下标j从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字节数是( C )。 A.80 B.100 C.240 D.270 3.假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为( C )。(无第0行第0列元素) A.16902 B.16904 C.14454 D.答案A, B, C均不对 4.将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组中的位置K为( A )。 A. 198 B. 195 C. 197 D.196

5.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( A )。 A. 1175 B. 1180 C. 1205 D. 1210 6.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]= ( B )。 A. 808 B. 818 C. 1010 D. 1020 7. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( B )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 8.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。 A、 13 B、 33 C、 18 D、 40 9. 二维数组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]

第5章 数组和广义表 自测题含答案

第5章 数组和广义表 自测题含答案 一、单选题 1. 假设有二维数组A 6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A 的起始存储位置(基地址)为1000,则数组A 的体积(存储量)为 288 B ;末尾元素A 57的第一个字节地址为 1282 ;若按行存储时,元素A 14的第一个字节地址为 (8+4)×6+1000=1072 ;若按列存储时,元素A 47的第一个字节地址为 (6×7+4)×6+1000)=1276 。 2. 〖00年计算机系考研题〗设数组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 3. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 行下标 、 列下标 和 元素值 。 4. 求下列广义表操作的结果: (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 ) ; 二、单选题( A )1. 〖01年计算机系考研题〗假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。(无第0行第0列元素) A.16902 B.16904 C.14454 D.答案A, B, C 均不对 答:此题与填空题第8小题相似。(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-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+j ??????????????=n n n n a a a a a a A ,2 ,1,2 ,21,21 ,1

数组和广义表习题

习题五数组 5.1 单项选择题(其中A[i..j]表示下标从i到j) 1. 常对数组进行的两种基本操作是__C__。 A. 建立与删除 B. 索引和修改 C. 查找和修改 D. 查找与索引 2. 二维数组M的成员是6个字符(每个字符占一个存储单元,即一个字节)组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放M 至少需要__①D__个字节;M 的第8列和第5行共占__②B__个字节。 ①A. 90 B. 180 C. 240 D. 540 ②A. 108 B. 114 C. 54 D. 60 4. 数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是__C__。 A. 80 B. 100 C.240 D. 270 5. 数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为_C___。 A. SA+141 B. SA+144 C. SA+222 D. SA+225 (7*10+4)*3=222 6. 数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,该数组按列存放时,元素A[5][8]的起始地址为_B___。 A. SA+141 B. SA+180 C. SA+222 D. SA+225 (7*8+4)*3=180 5.2 填空题(将正确的答案填在相应的空中,其中A[i,j]表示下标从i到j) 1. 已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是_ LOC(A[0][0]) +(i*n+j)*k___。 2. 二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元并且A[0][0]的存储地址是200,则A[6][12]的地址是_326___。200+(12*10+6)*1=326 3. 二维数组A[10..20][5..10]采用行序为主方式存储,每个元素占4个存储单元,并且A[10][5]的存储地址是1000,则A[18][9]的地址是__1000+(8*6+4)*4=1208__。 5.3算法设计题: 1. 假设稀疏矩阵A和B均以三元组顺序表作为存储结构。试写出矩阵相加的算法,另设三元组表C存放结果矩阵。 2. 假设系数矩阵A和B均以三元组顺序表作为存储结构。试写出满足以下条件的矩阵相加

数组广义表答案及二叉树习题及答案

栈、队列、串、数组和广义表习题 一、选择题 1 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( B )。 A. 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 2 2若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( D )。 A. i B. n-i C. n-i+1 D. 不确定 3 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( B ) A. 1和 5 B. 2和4 C. 4和2 D. 5和1 4 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( C )。 A. 6 B. 4 C. 3 D. 2 5 设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C ) A.求子串 B.联接 C.匹配 D.求串长 6 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。 A. 13 B. 33 C. 18 D. 40 7 已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( C )。 A. head(tail(LS)) B. tail(head(LS)) C. head(tail(head(tail(LS))) D. head(tail(tail(head(LS)))) 8 模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为( D ),nextval数组的值为( F )。 A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2 C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2 E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 1 F.0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 1 二、填空题 1 在作进栈运算时应先判别栈是否_(1)满_;在作退栈运算时应先判别栈是否_(2)空_;当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3)n_。 2 设循环队列存放在向量sq.data[0:M]中,则队头指针sq.front在循环意义下的出队操作可表示为__return(sq.data(sq.front));sq.front=(sq.front+1)%(M+1);_____,若用牺牲一个单元的办法来区分队满和队空(设队尾指针sq.rear),则队满的条件为_(sq.rear+1)%(M+1)==sq.front;_。 3 串是一种特殊的线性表,其特殊性表现在__(1) 其数据元素都是字符__;串的两种最基本的存储方式是__(2) 顺序存储__、__(3) 和链式存储__;两个串相等的充分必要条件

第五章 数组和广义表

第5章数组和广义表习题 一、选择题 1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为(B)。 i×(i-1)/2+j-1~~~~(i>=j) 8×7÷2+5=33因为a11从1开始所以要加1 A. 13 B. 33 C. 18 D. 40 2. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( A)。 所求=a+(j*n+j)*l A. 1175 B. 1180 C. 1205 D. 1210 3. 若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(i

数据结构数组和串自测题答案

串和数组自测卷答案姓名班级 一、填空题(每空1分,共20分) 1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。 (对应严题集4.1①,简答题:简述空串和空格串的区别) 2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为3。 4. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。 5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配成功。 6. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为(n-m+1)*m。 7. 假设有二维数组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列开始!) 8. 〖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=8950 9. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素 的行下标、列下标和元素值。 二、单选题(每小题1分,共15分) ( B )1.串是一种特殊的线性表,其特殊性体现在: A.可以顺序存储B.数据元素是一个字符 C.可以链式存储D.数据元素可以是多个字符 ( B )2.设有两个串p和q,求q在p中首次出现的位置的运算称作: A.连接B.模式匹配C.求子串D.求串长 ( D )3.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s 的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是:

数据库系统l试题库及答案 第5章数组和广义表

第5章 数组和广义表 5.1数组 一、填空题 1. 假设有二维数组A 6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A 的起始存储位置 (基地址)为1000,则数组A 的体积(存储量)为 ;末尾元素A 57的第一个字节地址为 。 2. 三元组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素 的 、 和 。 3. 设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则 元素a[32,58]的存储地址为 。 4. 设n 行n 列的下三角矩阵A 已压缩到一维数组B[1..n*(n+1)/2]中,若按行为主序存储,则A[i,j] 对应的B 中存储位置为 。 5. 设有一个10阶对称矩阵A 采用压缩存储方式(以行为主序存储:a 11=1),则a 85 的地址为 。 6. 设下三角矩阵A 如果按行序为主序将下三角元素A i j (i ≤j)存储在一个一维数组B[1..n(n+1)/2]中, 对任一个三角矩阵元素A ij ,它在数组B 中的下标为 。 二、选择题 1. ( )假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000, 每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。 A .16902 B .16904 C .14454 D .答案A, B, C 均不对 2. ( )对特殊矩阵采用压缩存储的目的主要是为了 。 A .表达变得简单 B .对矩阵元素的存取变得简单 C .去掉矩阵中多余元素 D .减少不必要的存储空间 3. ( )对于n 阶对称矩阵,如果以行序或列序放入内存中,则需要 个存储单元。 A .n(n+1)/2 B .n(n-1)/2 C . n 2 D .n 2 /2 4. 有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时, 所需的字节数是 。 A. 60 B. 66 C. 18000 D. 33 5. 对稀疏矩阵进行压缩存储目的是( )。 A .便于进行矩阵运算 B .便于输入和输出 C .节省存储空间 D .降低运算的时间复杂度 6. ( )设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一 维数组B[1, n(n-1)/2 ]中,对下三角部分中任一元素a i,j (i ≤j), 在一维数组B 中下标k 的值是 。 A .i(i-1)/2+j-1 B .i(i-1)/2+j C .i(i+1)/2+j-1 D .i(i+1)/2+j 三、判断题: 1.( )一个稀疏矩阵Am*n 采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把 ?????? ? ???????=n n n n a a a a a a A ,2,1 ,2,21,21,1Λ Λ

数据结构练习题-数组和广义表

已知二维数组A[3][5],其每个元素占3个存储单元,并且A[0][0]的存储地址为1200。 求元素A[1][3]的存储地址(分别对以行序和列序为主序存储进行讨论),该数组共占用多少个存储单元? 【解答】按照以行序为主序存储公式: LOC(i,j)=LOC(c1,c2)+[(i-c1)*(d2-c2+1)+(j-c2)]*L 在C语言中有:LOC(i,j)=LOC(0,0)+(i*(d2+1)+j)*L 则: LOC(A[1][3])=1200+(1*5+3)*3=1224 (按行序存储) LOC(A[1][3])=1200+(3*3+1)*3=1230 (按列序存储) 有一个10阶的对称矩阵A,采用压缩存储方式以行序为主序存储,A[1][1]为第一元素,其存储地址为1,每个元素占一个地址空间,求A[7][5]和A[5][6]的地址。 【解答】按照公式: LOC(A[7][5])=7(7-1)/2+5 = 26 LOC(A[5][6])=LOC(A[6][5])=6(6-1)/2+5=20 设有一个二维数组A[m][n],设A[0][0]存放位置在644,A[2][2]存放位置在676,每个元素占一个空间,问A[3][3]存放在什么位置? 因为A[0][0]存放位置在644,A[2][2]存放位置在676,每个元素占一个空间,说明一行有15个元素(算法:(676-2-644)/2)。A[3][3]存放位置是692。 二维数组A[9][10]的元素都是6个字符组成的串,请回答下列问题: (1)存放A至少需要( )个字节; (2)A的第7列和第4行共占( )个字节; (3)若A按行存放,元素A[7][4]的起始地址与A按列存放时哪一个元素的起始地址一致。 【解答】按照题5.1给出的公式: (1)存放A需要9*10*6=540个字节 (2)A的第7列和第行共占(9+10-1)*6=108个字节(3) LOC(A[7][4])= LOC(A[0][0])+[7*10+4]*L (按行序存储) LOC(A[i][j])= LOC(A[0][0])+[j*9+i]*L (按列序存储,0<=i<=8,0<=j<=9)所以,i=2,j=8。 即元素A[7][4]的起始地址与A按列存放时A[2][8]的起始地址一致。 什么是广义表?请简述广义表和线性表的主要区别。 【解答】广义表是零至多个元素的有限序列,广义表中的元素可以是原子,也可以是子表。 从“元素的有限序列”角度看,广义表满足线性结构的特性:在非空线性结构中,只有一个 称为“第一个”的元素,只有一个称为“最后一个”的元素,第一元素有后继而没有前驱, 最后一个元素有前驱而没有后继,其余每个元素有唯一前驱和唯一后继。从这个意义上说, 广义表属于线性结构。当广义表中的元素都是原子时,广义表就蜕变为线性表。 求广义表D=(a,(b,(),c),((d),e))的长度和深度。 【解答】3和3

数据结构数组和广义表自测题(附答案)

第4~5章串和数组 一、填空题 1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。 2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20, “/”的字符定位的位置为3。 4. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。 5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第6次匹配成功。 6. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为 (n-m+1)*m。 7. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基 1282;若按行地址)为1000,则数组A的体积(存储量)为288 B ;末尾元素A 57的第一个字节地址为 (8+4)×6+1000=1072;若按列存储时,元素A47的第一个字节地址存储时,元素A 14的第一个字节地址为 为(6×7+4)×6+1000)=1276。(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A 57可知,是从0行0列开始!) 8.设数组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=8950 9. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素 的行下标、列下标和元素值。 10.求下列广义表操作的结果: (1)GetHead【((a,b),(c,d))】=== (a, b) ; //头元素不必加括号 (2)GetHead【GetTail【((a,b),(c,d))】】=== (c,d) ;

相关主题
文本预览
相关文档 最新文档