多维数组与广义表测验
数据结构(数组和广义表)习题与答案
1、以行序优先顺序存储数组A[5][5];假定A[0][0]的地址为1000, 每个元素占4个字节,下标变量A[4][3]的地址是____。
A.1069B.1092C.1023D.1046正确答案:B2、数组a[1..6][1..5] (无0行0列)以列序优先顺序存储,第一个元素a[1][1]的地址为1000,每个元素占2个存储单元,则a[3][4]的地址是____。
A.1040B.1026C.1046D.1038正确答案:A3、设有一个5行4列的矩阵A,采用行序优先存储方式,A[0][0]为第一个元素,其存储地址为1000,A[2][2]的地址为1040,则A[3][0]的地址为_________。
A.1048B.1024C.1096D.1060正确答案:A4、设有一个10行10列的矩阵A,采用行序优先存储方式,存储全部数据需要400个字节的空间。
如果A[0][0]为第一个元素,其存储地址为1000,则A[3][6]的地址为_________。
A.1036B.1144C.1014D.10565、设有一个10行10列的矩阵A,采用行序优先存储方式。
如果A[0][0]为第一个元素,其存储地址为1000,A[2][3]的存储地址为1069,则存储一个元素需要的单元数是_________。
A.4B.1C.2D.3正确答案:D6、不能够对数据元素进行随机访问的物理结构是_________。
A.三元组顺序表B.对称矩阵的压缩存储C.三对角矩阵的压缩存储D.数组的顺序存储正确答案:A7、对特殊矩阵采用压缩存储的目的主要是_________。
A.表达变得简单B.去掉矩阵中的多余元素C.对矩阵元素的存储变得简单D.减少不必要的存储空间正确答案:D8、对n*n的对称矩阵进行压缩存储,需要保存的数据元素的个数是_________。
A.nB.n(n+1)/2C.n2D.n(n+1)9、设10*10的对称矩阵下三角保存SA[1..55]中,其中A[1][1]保存在SA[1]中,A[5][3] 保存在SA[k]中,这里k等于_________。
数据结构第4章 数组和广义表
第4章数组和广义表【例4-1】二维数组A的每一个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。
若A以行为主序存储元素,A[8][5]的物理地址与当A按列为主序存储时的元素()的物理地址相同。
设每个字符占一个字节。
A.A[8][5] B.A[3][10] C.A[5][8] D.A[0][9]解:二维数A是一个9行10列的矩阵,即A[9][10]。
按行存储时,A[8][5]是第85个元素存储的元素。
而按列存储时,第85个存储的元素是A[3][10]。
即正确答案为B。
【例4-2】若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[n(n+1)/2]中,则在B中确定的位置k的关系为()。
A.jii+-2)1(*B.ijj+-2)1(*C.jii++2)1(*D.ijj++2)1(*解:如果a ij按行存储,那么它的前面有i-1行,其有元素个数为:1+2+3+…+(i-1)=i(i-1)/2。
同时它又是所在行的第j列,因此它排列的顺序还得加上j,一维数组B[n(n+1)/2]中的位置k与其下标的关系是:jii+-2)1(*。
因此答案为A。
【例4-3】已知n阶下三角矩阵A,按照压缩存储的思想,可以将其主对角线以下所有元素(包括主对角线上元素)依次存放于一维数组B中。
请写出从第一列开始以列序为主序分配方式时在B中确定元素a ij的存放位置的公式。
解:如果a ij按列存储,那么它的前面有j-1列,共有元素:n+(n-1)+(n-2)+ …+[n-(j-2)]=(j-1)*n-2)1)(2(--jj而它又是所在列的第i行,因此在它前的元素个数还得加上i。
因此它在一维数组B中的存储顺序为:(j-1)*n-2)1)(2(--jj+i【例4-4】已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出的原子项ASCII码最大的运算是()。
数组和广义表习题
一、填空题1.通常采用___________存储结构来存放数组。
对二维数组可有两种存储方法:一种是以___________为主序的存储方式,另一种是以___________为主序的存储方式。
2. 用一维数组B与列优先存放带状矩阵A中的非零元素A[i,j] (1≤i≤n,i-2≤j≤i+2),B 中的第8个元素是A 中的第_ _行,第_ _列的元素。
3.设n行n列的下三角矩阵A已压缩到一维数组B[1..n*(n+1)/2]中,若按行为主序存储,则A[i,j]对应的B中存储位置为_______。
4. 所谓稀疏矩阵指的是_ 。
5. 广义表简称表,是由零个或多个原子或子表组成的有限序列,原子与表的差别仅在于____ 。
为了区分原子和表,一般用 ____表示表,用 _____表示原子。
一个表的长度是指 __,而表的深度是指__ __6、设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,若一行序为主序顺序存储,则元素a[45,68]的存储地址为;若以列序为主序存储,则元素a[45,68]的存储地址为。
7、有一个8ⅹ8的下三角矩阵A,若采用行序为主序顺序存储于一维数组a[1..n],则n的值为。
8、三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的、和。
9、已知广义表A=(((a))),则A的表头为:,A的表尾为:。
10、求下列广义表操作的结果:(1)Head ((a,b),(c,d)) == ; //头元素不必加括号(2)Head(Tail((a,b),(c,d)))== ;(3)Head(Tail(Head((a,b),(c,d))))== ;(4)Tail(Head(Tail((a,b),(c,d))))== ;11、设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7 ,列下标j从0到3 ,则二维数组W的数据元素共占用_______个字节。
数据结构答案第4章
第 4 章广义线性表——多维数组和广义表2005-07-14第 4 章广义线性表——多维数组和广义表课后习题讲解1. 填空⑴数组通常只有两种运算:()和(),这决定了数组通常采用()结构来实现存储。
【解答】存取,修改,顺序存储【分析】数组是一个具有固定格式和数量的数据集合,在数组上一般不能做插入、删除元素的操作。
除了初始化和销毁之外,在数组中通常只有存取和修改两种操作。
⑵二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元,A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。
【解答】1140【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。
⑶设有一个10阶的对称矩阵A采用压缩存储,A[0][0]为第一个元素,其存储地址为d,每个元素占1个存储单元,则元素A[8][5]的存储地址为()。
【解答】d+41【分析】元素A[8][5]的前面共存储了(1+2+…+8)+5=41个元素。
⑷稀疏矩阵一般压缩存储方法有两种,分别是()和()。
【解答】三元组顺序表,十字链表⑸广义表((a), (((b),c)),(d))的长度是(),深度是(),表头是(),表尾是()。
【解答】3,4,(a),((((b),c)),(d))⑹已知广义表LS=(a,(b,c,d),e),用Head和Tail函数取出LS中原子b的运算是()。
【解答】Head(Head(Tail(LS)))2. 选择题⑴二维数组A的每个元素是由6个字符组成的串,行下标的范围从0~8,列下标的范围是从0~9,则存放A至少需要()个字节,A的第8列和第5行共占()个字节,若A按行优先方式存储,元素A[8][5]的起始地址与当A按列优先方式存储时的()元素的起始地址一致。
第五章 数组和广义表
第五章数组和广义表一.选择题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. 4734.在稀疏矩阵的十字链接存储中,每个列单链表中的结点都具有相同的_____。
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]的地址是________。
数据结构答案第4章
⑴二维数组A的每个元素是由6个字符组成的串,行下标的范围从0~8,列下标的范围是从0~9,则存放A至少需要()个字节,A的第8列和第5行共占()个字节,若A按行优先方式存储,元素A[8][5]的起始地址与当A按列优先方式存储时的()元素的起始地址一致。
A 90 B 180 C 240 D 540 E 108 F 114 G 54
⑵二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元,A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。
【解答】1140
【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。
Head(Tail(Tail(Head(ST))))=奖金
⑵工资表ST的头尾表示法如图4-7所示。7.若在矩阵A中存在一个元素ai,j(0≤i≤n-1,0≤j≤m-1),该元素是第i行元素中最小值且又是第j列元素中最大值,则称此元素为该矩阵的一个马鞍点。假设以二维数组存储矩阵A,试设计一个求该矩阵所有马鞍点的算法,并分析最坏情况下的时间复杂度。
⑵因为k和i, j之间是一一对应的关系,k+1是当前非零元素的个数,整除即为其所在行号,取余表示当前行中第几个非零元素,加上前面零元素所在列数就是当前列号,即:
习题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+13.相邻4.前移,前,后5.物理存储位置,链域的指针值6.前趋,后继7.顺序,链接8.一定,不一定9.线性,任何,栈顶,队尾,队头10.单链表,双链表,非循环链表,循环链表11.使空表和非空表统一;算法处理一致12.O(1),O(n)13.栈满,栈空,m,栈底,两个栈的栈顶在栈空间的某一位置相遇14.2、315.O(1)三、简答题1.头指针是指向链表中第一个结点(即表头结点)的指针;在表头结点之前附设的结点称为头结点;表头结点为链表中存储线性表中第一个数据元素的结点。
若链表中附设头结点,则不管线性表是否为空表,头指针均不为空,否则表示空表的链表的头指针为空。
2.线性表具有两种存储结构即顺序存储结构和链接存储结构。
线性表的顺序存储结构可以直接存取数据元素,方便灵活、效率高,但插入、删除操作时将会引起元素的大量移动,因而降低效率:而在链接存储结构中内存采用动态分配,利用率高,但需增设指示结点之间关系的指针域,存取数据元素不如顺序存储方便,但结点的插入、删除操作较简单。
3.应选用链接存储结构,因为链式存储结构是用一组任意的存储单元依次存储线性表中的各元素,这里存储单元可以是连续的,也可以是不连续的:这种存储结构对于元素的删除或插入运算是不需要移动元素的,只需修改指针即可,所以很容易实现表的容量的扩充。
4.应选用顺序存储结构,因为每个数据元素的存储位置和线性表的起始位置相差一个和数据元素在线性表中的序号成正比的常数。
因此,只要确定了其起始位置,线性表中的任一个数据元素都可随机存取,因此,线性表的顺序存储结构是一种随机存取的存储结构,而链表则是一种顺序存取的存储结构。
5.设尾指针比设头指针好。
数据结构实验报告-数组和广义表
(*T).data[q].i=(*M).data[q].j;
(*T).data[q].j=(*M).data[q].i;
(*T).data[q].e=(*M).data[q].e;
}
}
}
Source.h
#include"header.h"
void main()
{
TSMatrix M,T;
CreateSMatrix(&M);
六、教师评语
签名:
日期:
成绩
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
#include<stdlib.h>
//稀疏矩阵的三元组顺序表存储
#define MAXSIZE 125 //非零元个数的最大值
typedef int ElemType;
typedef struct//三元组节点
{
int i,j;//非零元的行下标、列下标
ElemType e;//矩阵的元素值。
}Triple;
{
int *p,k,i,j;
int mu,nu,tu;
mu=(*M).mu;nu=(*M).nu;tu=(*M).tu;
p=(int *)malloc((nu+1ห้องสมุดไป่ตู้*sizeof(ElemType));//用来保存每行元素。
for(i=1;i<=mu;i++)
{
for(k=0;k<=nu;k++) p[k]=0;
《数据结构》实验报告
实验序号:7实验项目名称:数组和广义表
学 号
姓 名
专业班级
数据结构练习试题和答案解析
第1章绪论一、判断题1.数据的逻辑结构与数据元素本身的内容和形式无关。
(√)2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。
(√)3.数据元素是数据的最小单位。
(×)4.数据的逻辑结构和数据的存储结构是相同的。
(×)5.程序和算法原则上没有区别,所以在讨论数据结构时可以通用。
(×)6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。
(√)7.数据的存储结构是数据的逻辑结构的存储映象。
(√)8.数据的物理结构是指数据在计算机内实际的存储形式。
(√)9.数据的逻辑结构是依赖于计算机的。
(×)10.算法是对解题方法和步骤的描述。
(√)二、填空题1.数据有逻辑结构和存储结构两种结构。
2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。
3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。
4.树形结构和图形结构合称为非线性结构。
5.在树形结构中,除了树根结点以外,其余每个结点只有1个前驱结点。
6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。
7.数据的存储结构又叫物理结构。
8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。
9.线性结构中的元素之间存在一对一的关系。
10.树形结构中的元素之间存在一对多的关系。
11.图形结构的元素之间存在多对多的关系。
12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算) 3个方面的内容。
13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系有限集合。
14.算法是一个有穷指令的集合。
15.算法效率的度量可以分为事先估算法和事后统计法。
16.一个算法的时间复杂度是算法输入规模的函数。
17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模的n的函数。
18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O( nlog2n)。
数据结构教程李春葆课后答案第6章数组和广义表
3. 如果某个一维数组 A 的元素个数 n 很大,存在大量重复的元素,且所有元素值相同 的元素紧挨在一起,请设计一种压缩存储方式使得存储空间更节省。
答:设数组的元素类型为 ElemType,采用一种结构体数组 B 来实现压缩存储,该结构 体数组的元素类型如下:
struct { ElemType data;
解:从二维数组 B 的右上角的元素开始比较。每次比较有三种可能的结果:若相等, 则比较结束;若 x 大于右上角元素,则可断定二维数组的最上面一行肯定没有与 x 相等的 数据,下次比较时搜索范围可减少一行;若 x 小于右上角元素,则可断定二维数组的最右 面一列肯定不包含与 x 相等的数据,下次比较时可把最右一列剔除出搜索范围。这样,每 次比较可使搜索范围减少一行或一列,最多经过 m+n 次比较就可找到要求的与 x 相等的元 素。对应的程序如下:
{ printf("不是对角矩阵\n");
return false;
}
for (int i=0;i<a.nums;i++)
if (a.data[i].r==a.data[i].c) //行号等于列号
sum+=a.data[i].d;
return true;
}
11. 设计一个算法 Same(g1,g2),判断两个广义表 g1 和 g2 是否相同。 解:判断广义表是否相同过程是,若 g1 和 g2 均为 NULL,则返回 true;若 g1 和 g2 中一个为 NULL,另一不为 NULL,则返回 false;若 g1 和 g2 均不为 NULL,若同为原子 且原子值不相等,则返回 false,若同为原子且原子值相等,则返回 Same(g1->link,g2->link), 若同为子表,则返回 Same(g1->val.sublist,g2->val.sublist) & Same(g1->link,g2->link)的 结果,若一个为原子另一个为子表,则返回 false。对应的算法如下:
【学习】第五章多维数组与广义表
把三维以上的数组称为多维数组, 可有多个直接前驱和多个直接后继 是一种非线性结构。
整理课件
在C语言中的描述
typedef int datatype;
datatype array1[N];
datatype array2[M][N];
datatype array3[X][Y][Z];
数组一旦被定义,它的维数和维界就不再改 变。因此,数组只有存取元素和修改元素值的 操作。
如何计算数组元素的地址?
按上述两种方式顺序存储的序组,只要知道:
开始结点的存放地址(即基地址), 维数 每维的上、下界 每个数组元素所占用的单元数,
就可以将数组元素的存放地址表示为其下标的线性函 数。因此,数组中的任一元素可以在相同的时间内存 取,即顺序存储的数组是一个随机存取结构。
整理课件
整理课件
)
2
n(n1),当ij,即下三角阵中的常数 2
3.三对角矩阵
1
1
1 1 0 0 0 如何确定一维数组的大小? 2
23700
N3n2
3
04530
7
0 0 6 7 5 如何确定元素Aij在一维数 4
0 0 0 8 9 组中的位置?
5
3
在Aij之前有i行,共有3*i-1个非零元素,
6
在第i行, aij之前有j-i+1个非零元素,
(4) A.195 B.196 C.197
D.198
整理课件
5.2.3 稀疏矩阵的压缩存储 顺序存储:三元组表 链式存储:十字链表
整理课件
1.三元组表存稀疏矩阵
12005
03000 M=5
04000
N=5
T=7
第6章 多维数组和广义表
(2)三维数组中aijk的地址 同理对于三维数组元素aijk的物理地址为:
LOC(aijk)=LOC(a000)+( (i×n×p+ j×p +k) ×d (0下标起始的语言)
【例6-1】设二维数组A5×6 ,每个元素占4个字节(Byte),存储 器按字节编址。已知A的起始地址为2000。计算
下三角矩阵压缩存储如图6-7所示。
2.上三角矩阵 对于上三角矩阵,其存储思想与下三角类似,共需要
n(n+1)/2+1个存储单元。 sak与aji 的对应关系为:
上三角矩阵压缩存储如图6-8 所示。
图6-8 上三角矩阵压缩存储
6.3
稀疏矩阵
上述特殊矩阵,由于元素的分布具有某种规律,所以能
找到一种合适的方法进行压缩存储。但实际应用中有一种矩 阵,在mn的矩阵中有t个非零元素,且t远小于mn,我们这 样的矩阵称为稀疏矩阵。在很多科学管理及工程计算中,常 会遇到阶数很高的大型稀疏矩阵。若按常规方法顺序分配在 计算机内,那是相当浪费内存的。为此提出另外一些存储方 法,仅仅存放非零元素。但对于这类矩阵,通常零元素分布 没有规律,为了能找到相应的元素,仅存储非零元素的值是
三元组表的定义:
#define SMAX struct SPNode { 100 // 定义一个足够大的三元组表 // 定义三元组
int i,j,v;
}; struct sparmatrix
// 三元组非零元素的行、列和值
// 定义稀疏矩阵
{
int rows,cols,terms; // 稀疏矩阵行、列和非零元素的个数 SPNode data[SMAX]; }; // 三元组表
5多维数组和广义表
第五章多维数组和广义表本章要点:·多维数组的概念极其表示方法·特殊矩阵和稀疏矩阵·广义表的存储5.1多维数组a11a12……a n1Am×n= a21a22……a n2……………………a m1a m2……a mn5.2数组的顺序表示数组可以以行为主序,也可以以列为主序。
设每个数组的元素占t个存储单元,数组的下标从1开始,则元素a ij的位置可以由下式确定:Loc(a ij)=Loc(a11)+[(i-1)*n+j-1]*t其中:a11称为基地址。
在C语言中,数组的下标从0开始,则元素a ij的位置可以由下式确定:Loc(a ij)=Loc(a00)+(i*n+j)*t其中:a00称为基地址。
5.3矩阵的压缩存储5.3.1特殊矩阵1.对称矩阵若一个n阶方阵A的元素满足下述性质:a jia1≤i,j≤n ,称为对称矩阵。
ij由于元素的对称性,一对对称元素只分配一个存储空间即可,这样n2个元素只须n(n+1)/2空间即可。
如:4 7 0 27 0 0 3 0 0 9 52 3 5 1一般按行优先存储的下三角矩阵如下:a11An ×n= a 21 a 22 …………… a n 1 a n 2 ……a nn所以将一个二维数组a[i][j]存储在一个一维数组 sa[k]中的对应关系如下:{2)1(2)1(j i j i i j i i j j k ≥+-<+-=当当其中:k 是一维数组sa 的下标。
2.三角矩阵一般下三角矩阵如下:a11c …… cAn ×n= a 21 a 22 …… c ………………… a n 1 a n 2 ……a nna[i][j]和sa[k]的对应关系如下:{1)22(2112)1(ji i j i n i j i n n k ≤+-++-->++=当当一般上三角矩阵如下:a11a 12 ……a n 1An ×n= c a 22……a n 2 ………………… c c …… a nna[i][j]和sa[k]的对应关系如下:{2)1(12)1(j i j i i j i n n k ≥+-<++=当当 5.3.2 稀疏矩阵当矩阵中非0元素远远少于0元素,而且分布没有规律,称为稀疏矩阵。
数据结构与算法多维数组与广义表
数组
• 3. 多维数组 • 下面将二维数组推广到多维数组,对n维数组也采用两种存
储映射方式,即二维数组的按行存储与按列存储的推广。 按行存储和按列存储都是一种“左”下标优先的存储方法, 即第1个(最左)下标的下标值较小的元素较先存储,对于 第1个下标值相同者,按第2个下标优先存储,对任意的k> 1,对第1~(k–1)维相同者,先存储第k维中下标值较小者。
数组
• 数组的存储结构与寻址问题 • 数组是一种特殊的数据结构,一般要求元素的存储地址能
根据它的下标(即逻辑关系)计算出来,因此数组一般只 采用顺序存储结构。讨论数组元素地址时,一般将第1个元 素的起始存储单元作为参考单元,参考单元的绝对地址称 为该数组的首地址,数组其他元素的相对地址均相对于首 元素的起始地址。设i1, i2,…, in为某n维数组中的一个元素的 下标,则用Loc( ai1,i2,L ,in )表示此元素的相对地址。 • 对一维数组,与线性表类似,可使用顺序存储方式;但对 多维数组,由于其已不属于线性结构的范畴,因此不能直 接使用顺序存储方式。但多维数组有其特殊性,具有线性 结构的痕迹,它可唯一地转换为一维结构,并可根据元素 的存储位置推算出元素的逻辑关系(下标),所以可将多 维数组映射为一维结构,然后使用顺序存储方式。
数组
• 1. 一维数组 • 一维数组的每个元素只含一个下标,其实质上是一个线性
《数据结构》习题集:第5章_数组与广义表
第5章数组与广义表一、选择题1.在以下讲述中,正确的是(B )。
A、线性表的线性存储结构优于链表存储结构B、二维数组是其数据元素为线性表的线性表C、栈的操作方式是先进先出D、队列的操作方式是先进后出2.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点(A )。
A、正确B、错误3.二维数组SA 中,每个元素的长度为3 个字节,行下标I 从0 到7,列下标J 从0 到9,从首地址SA 开始连续存放在存储器内,该数组按列存放时,元素A[4][7]的起始地址为(B)。
A、SA+141B、SA+180C、SA+222D、SA+2254.数组SA 中,每个元素的长度为3 个字节,行下标I 从0 到7,列下标J 从0 到9,从首地址SA 开始连续存放在存储器内,存放该数组至少需要的字节数是( C )。
A、80B、100C、240D、2705.常对数组进行的两种基本操作是(B )。
A、建立与删除B、索引和修改C、查找和修改D、查找和索引6.将一个A[15][15]的下三角矩阵(第一个元素为A[0][0]),按行优先存入一维数组B[120]中,A 中元素A[6][5]在B 数组中的位置K 为( B )。
A、19B、26C、21D、157.若广义表A 满足Head(A)=Tail(A),则A 为(B )。
A、()B、(())C、((),())D、((),(),())8.广义表((a),a)的表头是( C ),表尾是(C )。
A、aB、bC、(a)D、((a))9.广义表((a,b),c,d)的表头是( C ),表尾是(D )。
A、aB、bC、(a,b)D、(c,d)10.广义表((a))的表头是( B ),表尾是(C )。
A、aB、(a)C、()D、((a))11.广义表(a,b,c,d)的表头是(A ),表尾是(D )。
A、aB、(a)C、(a,b)D、(b,c,d)12.广义表((a,b,c,d))的表头是(C ),表尾是(B )。
数据结构第五章数组和广义表
数据结构第五章数组和广义表(总6页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--第五章数组和广义表:习题习题一、选择题1.假设以行序为主序存储二维数组A[1..100,1..100],设每个数据元素占两个存储单元,基地址为10,则LOC(A[5,5])=( )。
A. 808B. 818C. 1010D. 10202.同一数组中的元素( )。
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+jB. (i-l)×n+j-lC.i×(j-l) D. j×m+i-l6.所谓稀疏矩阵指的是( )。
A.零元素个数较多的矩阵B.零元素个数占矩阵元素中总个数一半的矩阵C.零元素个数远远多于非零元素个数且分布没有规律的矩阵D.包含有零元素的矩阵7.对稀疏矩阵进行压缩存储的目的是( )。
A.便于进行矩阵运算B.便于输入和输出C.节省存储空间D. 降低运算的时间复杂度8.稀疏矩阵一般的压缩存储方法有两种,即( )。
数据结构 多维数组及广义表
第1列
Байду номын сангаас
aij的地址为:LOC(aij)= LOC(a00)+(j×m+i)× d
二维数组的逻辑特征和存储方法可以很容易地推广到多维数 组。 例如三维数组可以看成是由二维数组组成的线性表,三维数 组中的每个元素最多有三个直接前趋和三个直接后继。 同样,行优先原则和列优先原则也可以推广到多维数组,按 行优先原则时先排最右的下标,按列优先原则时先排最左的下 标。 得到行优先或列优先序列后,可以把它们依次存放在连续的 存储空间中,这就是多维数组的顺序存储,同样可实现随机存 取。
a00 C C a01 a11 C a12 a22 a0,n-1 a1,n-1
……
C
……
C
an-1,n-1
若上三角阵以行优先顺序存储,则地址公式与对称矩阵的行 优先顺序存储上三角的地址公式相似,元素的下标k为:
k= i(2n-i+1)/2+j-i i≤j (上三角) n(n+1)/2 i>j (下三角)
(1)行优先顺序存储下三角 以图(a)所示的n阶方阵为例,行优先顺序存储下三角时 元素的排列顺序如图(b)所示,存储在一维数组中如图(c )所示。
a00 a10 a20 a01 a11 a21 a22 a0,n-1 a1,n-1 a00 a01 a10 a11 a20 a21 a22 a0,n-1 a1,n-1
1.三元组顺序表
将三元组表中的三元组按照行优先的顺序排列成一个序列, 然后采用顺序存储方法存储该线性表,称为三元组顺序表。矩 阵A的三元组顺序表为:
0 11 0 -3 A6×7= 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 6 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 B6×7= 4 0
数据结构 第五章 多维数组和广义表
(
)
数组特点
• 数组结构固定 • 数据元素同构
数组运算
• 给定一组下标,存取相应的数据元素 • 给定一组下标,修改数据元素的值
数组的两种顺序存储结构
以行序为主序(行优先顺序) 以列序为主序(列优先顺序)
按行序为主存放
a11 a12 ……..
a1n
a21 a22 …….. am1 am2 ……..
Loc(aij)=Loc(a00)+[i(i+1)/2+j]*d
i (i 1) / 2 j,当 i j k n(n 1) / 2, 当i j
三角矩阵(上三角)
a00 a01 a02 …….... a0,n-1
c a11 a12 ……. a1,n-1 c c an-1,n-1
k (3i 1) ( j i 1) 2i j
2i j,当| i j | 2 k 0,当 | i j | 1
5.2.2 稀疏矩阵
定义:若矩阵的非零元素个数远远少于它的零元素个数,且 非零元素的分布没有一定规律,则该矩阵为稀疏矩阵。
0 12 9 0 0 0 0 0 3 0 0 0 M 0 0 24 0 0 18 0 0 15 0 0 7 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 67 0 0
按行序为主序:
an-1n-1
a00 a10 a11 a20 a21 a22 …….. an-10 ……… an-1n-1 k=0 1 2 3 4 5 n(n-1)/2 n(n+1)/2-1
i (i 1) / 2 j,当 i j k j ( j 1) / 2 i, 当i j
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--------多维数组与广义表测验
1. 多维数组(矩阵)一般采用什么方式存储?为什么?
2. 广义表一般采用什么方式存储?为什么?
1. 算法的设计与实现取决于什么?
3. 矩阵数据一般采用 存储方法存储数据; 广义表一般采用 方式存储 --------树测验
1.
树的逻辑特征是怎样的? 2.
二叉树与树在概念上是相同的吗? 为什么? 3.
深度为h 的二叉树最多有多少结点?第i 层最多有多少结点? 4. 一棵二叉树的中序序列和后序序列分别如下,试画出该二叉树。
(7分) 先序序列:- + a * b c / d e ;
中序序列:a + b * c – d / e ;
后序序列: a b c * + d e / -
------------------------------------------
先序序列:ABCDEFGHIJ ;
中序序列:CBEDAGHFJI ;
后序序列:CEDBHGJIFA
5. 将下图所示的森林转换成对应的二叉树:
6. n 个结点的二叉树,如果采用二叉链表存储,有多少个指针域为空?为什么?
7. n 个结点的二叉树,如果采用二叉链表存储,值非空的链域的个数为 。
a. n-1 b. 2n-1 c. n+1 d. 2n+1
8. 树的存储方式有几种?树的哪两种存储方式结合,可以使寻找双亲和孩子变得容易?并用C 语言描述其存储结构?
9. 已知用于通讯的电文由7个字母组成,其字母的出现的频度权值W={6,8,2,4,9,15,19},请构造出这组权值的哈夫曼树,并为这7个字母设计哈夫曼编码。