数据结构5
数据结构第5章 串和广义表
5.1 串的定义和基本运算
• (4)串的连接StrCat(S,T)。 • 初始条件:串S和T存在。 • 操作结果:将串T的值连接在串S的后面。 • (5)求子串SubString(Sub,S,pos,len)。 • 初始条件:串S存在,1≤pos≤StrLength(S)且
1≤len≤StrLength(S)-pos+1。 • 操作结果:用Sub返回串S的第pos个字符起长度为len的
1≤len≤StrLength(S)-pos+1。 • 操作结果:从串S中删除第pos个字符起长度为len的子串。 • (9)串的替换StrReplace(S,T,V)。 • 初始条件:串S,T和V存在,且T是非空串。 • 操作结果:用V替换串S中出现的所有与T相等的不重叠子
串。 • (10)判断串空StrEmpty(S)。 • 初始条件:串S存在。 • 操作结果:若串S为空串,则返回1;否则返回0。
• (1)非紧凑存储。设串S="Hello boy",计算机字长为32 位(4个Byte),用非紧凑格式一个地址只能存一个字符, 如图5-2所示。其优点是运算处理简单,但缺点是存储空 间十分浪费。
• (2)紧凑存储。同样存储S="Hello boy",用紧凑格式一 个地址能存四个字符,如图5-3所示。紧凑存储的优点是 空间利用率高,缺点是对串中字符处理的效率低。
•}
5.3 串的基本运算的实现
• (3)求子串操作。求串S从第pos位置开始,长度为len的 子串,并将其存入到串Sub中。操作成功返回1,不成功 返回0。其算法描述如下:
• int SubString(String *S,String *Sub,int pos,int len)
数据结构 (5)
else break; /* find the proper position */
}
H->Elements[ i ] = LastElement;
return MinElement;
}
11/15
4. Other Heap Operations:
§3 Binary Heap
Note: Finding any key except the minimum one will have to take a linear scan through the entire heap.
Note: Analogously, we can declare a max heap by changing the heap order property.
[1] 9 The largest key
[1] 10 The smallest key
[2] 6 [3] 3
[2] 20 [3] 83
[4] 5
return FatalError( "Out of space!!!" ); H->Capacity = MaxElements; H->Size = 0; H->Elements[ 0 ] = MinData; /* set the sentinel */ return H; }
6/15
2. Heap Order Property:
LastElement = H->Elements[ H->Size-- ]; /* take last and reset size */
for ( i = 1; i * 2 <= H->Size; i = Child ) { /* Find smaller child */
数据结构第五章 数组与广义表
压缩存储方法:只需要存储下三角 (含对角线)上的元素。可节省一 半空间。
可以使用一维数组Sa[n(n+1)/2]作为n阶对称矩阵A的存 储结构,且约定以行序为主序存储各个元素,则在Sa[k]和矩
阵元素aij之间存在一一对应关系: (下标变换公式)
i(i+1)/2 + j 当i≥j k = j(j+1)/2 + i 当i<j
q = cpot[col];
T.data[q].i = M.data[p].j; T.data[q].j = M.data[p].i; T.data[q].e = M.data[p].e; ++cpot[col]; }
分析算法FastTransposeSMatrix的时间 复杂度:
for (col=1; col<=M.nu; ++col) … … for (t=1; t<=M.tu; ++t) … … for (col=2; col<=M.nu; ++col) … … for (p=1; p<=M.tu; ++p) … …
//对当前行中每一个非零元
处
brow=M.data[p].j;
理
if (brow < N.nu ) t = N.rpos[brow+1];
M
else { t = N.tu+1 }
的
for (q=N.rpos[brow]; q< t; ++q) { ccol = N.data[q].j; // 乘积元素在Q中列号
一、三元组顺序表
对于稀疏矩阵,非零元可以用三元组表示, 整个稀疏矩阵可以表示为所有非零元的三元组所 构成的线性表。例如:
数据结构 5数组和广义表A
1 Status Locate(Array A,va_list ap,int &off) 2{ 3 //若ap指示的各下标值合法,则求出该元素在A中,相对地
址off
4 off=0; 5 for(i=0;i<A.dim;++i) 6 { 7 ind=va_arg(ap,int); 8 if(ind<0||ind>A.bounds[i]) return OVERFLOW; 9 off+=A.constants[i] *ind; 10 } 11 return OK; 12 }
行数 总列数,即 第2维长度 元素个数
ij
补充:计算二维数组元素地址的通式
设一般的二维数组是A[c1..d1, c2..d2],这里c1,c2不一定是0。
单个元素 长度
二维数组列优先存储的通式为: LOC(aij)=LOC(ac1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L
6
例1〖软考题〗:一个二维数组A[1..6, 0..7],每个数组元素
16
5.4
1、定义:
广义表的定义
广义表是线性表的推广,也称为列表(lists) 记为: LS = ( a1 , a2 , ……, an ) 广义表名 表头(Head) 表尾 (Tail) n是表长
在广义表中约定:
① 第一个元素是表头,而其余元素组成的表称为表尾; ② 用小写字母表示原子类型,用大写字母表示列表。
13
1 Status Value(Array A,ElemType &e,…){ 2 //A是n维数组,e为元素变量,随后是n个下标值,若各下
标不超界,则e赋值为所指定的A的元素值,即将指定元素值 读到e变量中。
数据结构第5章课件 中国石油大学(华东)
二叉链表
leftChild
data rightChild
22
二叉树的链表表示(三叉链表)
每个结点增加一个指向双亲的指针parent,使 得查找双亲也很方便。
leftChild data parent rightChild
三叉链表
data
leftChild
27
BinTreeNode *LeftChild (BinTreeNode *current ) { return (current != NULL )? current->leftChild :NULL; } BinTreeNode *RightChild (BinTreeNode *current ) { return ( current!= NULL) ? current->rightChild : NULL; } int Height( ){return Height(root);} int Size( ){return Size(root);} BinTreeNode *GetRoot ( ) const { return root; } void preOrder( ) {preOrder(root);} //前序遍历 void inOrder( ) {inOrder(root);} //中序遍历 void postOrder( ) {postOrder(root);} //后序遍历 void levelOrder( ) ; // 不需要递归,所以直接对外接 口调用即可。层序遍历 28
b
f
c
d
g
6
e
a
b.嵌套集合表示法: b 根据树的集合定义,写出集合划分。 { a, {b,{e},{f}}, {c}, {d,{g}} } e c d
数据结构第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、知道一颗树的先序序列和后序序列可唯一确定这颗树。
( ×)2、二叉树的左右子树可任意交换。
(×)3、任何一颗二叉树的叶子节点在先序、中序和后序遍历序列中的相对次序不发生改变。
(√)4、哈夫曼树是带权路径最短的树,路径上权值较大的结点离根较近。
(√)5、用一维数组存储二叉树时,总是以前序遍历顺序存储结点。
( ×)6、完全二叉树中,若一个结点没有左孩子,则它必是叶子结点。
( √)7、一棵树中的叶子数一定等于与其对应的二叉树的叶子数。
(×)8、度为2的树就是二叉树。
(×)二、单项选择题1.具有10个叶结点的二叉树中有( B )个度为2的结点。
A.8 B.9 C.10 D.112.树的后根遍历序列等同于该树对应的二叉树的( B )。
A. 先序序列B. 中序序列C. 后序序列3、二叉树的先序遍历和中序遍历如下:先序遍历:EFHIGJK;中序遍历:HFIEJKG 。
该二叉树根的右子树的根是:( C )A. EB. FC. GD. H04、在下述结论中,正确的是( D )。
①具有n个结点的完全二叉树的深度k必为┌log2(n+1)┐;②二叉树的度为2;③二叉树的左右子树可任意交换;④一棵深度为k(k≥1)且有2k-1个结点的二叉树称为满二叉树。
A.①②③B.②③④C.①②④D.①④5、某二叉树的后序遍历序列与先序遍历序列正好相反,则该二叉树一定是( D )。
A.空或只有一个结点B.完全二叉树C.二叉排序树D.高度等于其结点数三、填空题1、对于一棵具有n个结点的二叉树,对应二叉链接表中指针总数为__2n____个,其中___n-1_____个用于指向孩子结点,___n+1___个指针空闲着。
2、一棵深度为k(k≥1)的满二叉树有_____2k-1______个叶子结点。
数据结构-第5章--数组练习题
数据结构-第5章--数组练习题第5章数组一、选择题3.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为(A)。
A.BA+141B.BA+180C.BA+222D.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]的地址是()。
1195A.1175B.1180C.1205D.12107.将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组中的位置K为()。
供选择的答案:A.198B.195C.1972+64某3=19410.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(iA.i某(i-1)/2+jB.j某(j-1)/2+iC.i某(i+1)/2+jD.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)。
数据结构第五章参考答案
习题51.填空题(1)已知二叉树中叶子数为50,仅有一个孩子的结点数为30,则总结点数为(___________)。
答案:129(2)3个结点可构成(___________)棵不同形态的二叉树。
答案:5(3)设树的度为5,其中度为1~5的结点数分别为6、5、4、3、2个,则该树共有(___________)个叶子。
答案:31(4)在结点个数为n(n>1)的各棵普通树中,高度最小的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。
高度最大的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。
答案:2 n-1 1 n 1 n-1(5)深度为k的二叉树,至多有(___________)个结点。
答案:2k-1(6)(7)有n个结点并且其高度为n的二叉树的数目是(___________)。
答案:2n-1(8)设只包含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为(___________),最小结点数为(___________)。
答案:2k+1-1 k+1(9)将一棵有100个结点的完全二叉树按层编号,则编号为49的结点为X,其双亲PARENT (X)的编号为()。
答案:24(10)已知一棵完全二叉树中共有768个结点,则该树中共有(___________)个叶子结点。
答案:384(11)(12)已知一棵完全二叉树的第8层有8个结点,则其叶子结点数是(___________)。
答案:68(13)深度为8(根的层次号为1)的满二叉树有(___________)个叶子结点。
答案:128(14)一棵二叉树的前序遍历是FCABED,中序遍历是ACBFED,则后序遍历是(___________)。
答案:ABCDEF(15)某二叉树结点的中序遍历序列为ABCDEFG,后序遍历序列为BDCAFGE,则该二叉树结点的前序遍历序列为(___________),该二叉树对应的树林包括(___________)棵树。
朱战立数据结构第五版答案
朱战立数据结构第五版答案第一章:引论1.1 数据结构的概念数据结构是指数据对象中元素之间的关系和相互操作的一种集合体。
数据结构的设计和实现对于解决实际问题非常重要。
1.2 抽象数据类型(ADT)抽象数据类型是指一个数学模型以及该模型上的一组操作。
通过使用抽象数据类型,我们可以将数据对象的表示和对数据对象的操作封装在一起,从而实现了数据的抽象。
1.3 算法的基本概念算法是解题方案的准确而完整的描述,它是实现特定功能的有限指令序列。
算法的设计和分析是数据结构和算法课程的核心内容。
第二章:算法分析2.1 算法效率的度量算法的效率可以从时间复杂度和空间复杂度两个方面来度量。
时间复杂度是指算法执行所需要的时间;空间复杂度是指算法执行所需要的额外空间。
2.2 最坏情况和平均情况在算法分析中,我们通常关注算法在最坏情况下的表现,这是因为最坏情况下的性能是算法的上界,可以保证算法在任何情况下都能满足要求。
2.3 算法设计的要求算法设计的要求包括正确性、可读性、健壮性和高效性。
一个好的算法应当能够解决问题、易于理解、能够处理各种输入,并且在合理的时间内完成。
第三章:线性表3.1 线性表的定义线性表是具有相同数据类型的n个数据元素的有限序列。
线性表可以为空表,也可以包含一个或多个数据元素。
3.2 线性表的顺序表示线性表的顺序表示是指使用一组地址连续的存储单元依次存储线性表的元素。
顺序表示的优点是随机访问速度快,但插入和删除操作的效率较低。
3.3 线性表的链式表示线性表的链式表示是指使用一组任意存储单元来存储线性表的元素,通过指针将这些存储单元链接在一起。
链式表示的优点是插入和删除操作的效率较高,但访问元素的速度较慢。
3.4 线性表的应用线性表是最常用的数据结构之一,它在实际问题中有广泛的应用。
例如,线性表可以用来实现栈、队列、串等数据结构。
第四章:栈和队列4.1 栈栈是一种特殊的线性表,它只允许在表的一端进行插入和删除操作。
数据结构第五章数组和广义表
数据结构第五章数组和广义表(总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.假设以行序为主序存储二维数组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.稀疏矩阵一般的压缩存储方法有两种,即( )。
A.二维数组和三维数组B.三元组和散列C.三元组和十字链表D.散列和十字链表9.有一个100×90的稀疏矩阵,非0元素有10个,设每个整型数占两字节,则用三元组表示该矩阵时,所需的字节数是( )。
数据结构 第5章_递归
2 m=Fibona(2)+Fibona(1); 1 return(m);
(13)
1
(15)
S3
(8) 2
m=Fibona(2)+Fibona(1);
(9)
(10)
1
(14)
return(1)
return(m);
return(1)
return(1)
(4)
return(1)
(5) 1
(6)
(7) 1 Fibona(5)的执行过程
退出
5.3 递归程序到非递归程序的转换
采用递归方式实现问题的算法程序具有结构清 晰、可读性好、易于理解等优点,但递归程序较之 非递归程序无论是空间需求还是时间需求都更高, 因此在希望节省存储空间和追求执行效率的情况下, 人们更希望使用非递归方式实现问题的算法程序; 另外,有些高级程序设计语言没有提供递归的 机制和手段,对于某些具有递归性质的问题(简称 递归问题)无法使用递归方式加以解决,必须使用 非递归方式实现。因此,本小节主要研究递归程序 到非递归程序的转换方法。
退出
例5 采用非递归方式实现求正整数n的阶乘值。 仍使用Fact(n)表示n的阶乘值。要求解Fact(n) 的值,可以考虑i从0开始,依次取1,2,……,一直到n, 分别求Fact(i)的值,且保证求解Fact(i)时总是以前 面已有的求解结果为基础;当i=n 时,Fact(i)的值即 为所求的Fact(n)的值。
退出
排列问题
设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。
设R={r1,r2,…,rn}是要进行排列的n个元素,Ri=R-{ri}。 集合X中元素的全排列记为perm(X)。 (ri)perm(X)表示在全排列perm(X)的每一个排列前加 上前缀得到的排列。R的全排列可归纳定义如下:
数据结构第五章 数组和广义表
5.3.1
特殊矩阵
1、对称矩阵 在一个n阶方阵A中,若元素满足下述性质: aij = aji 1≤i,j≤n 则称A为对称矩阵。 a11 1 5 1 3 7 a21 a 22 5 0 8 0 0 a31 a32 a33 1 8 9 2 6 ……………….. 3 0 2 5 1 an 1 a n 2 a n 3 …a n n 7 0 6 1 3
第5章
数组和广义表
5.1 数组的定义
5.2 数组的顺序表示和实现
5.3 矩阵的压缩存储
5.3.1 特殊矩阵
5.3.2 稀疏矩阵
5.4 广义表的定义
5.1 数组的定义
数组-----线性表的扩展 A =(a0,a1,a2,…,an-1)
a00 a10 ┇ Am×n= ai0 ┇ am-1,0 a01 … a0j … a11 … a1j … ┇ ai2 … aij … ┇ am-1,2 … am-1,j … a0,n-1 a1,n-1 ai,n-1 am-1,n-1 α0 α1 ┇ Am×n= α i ┇ α m-1
Assign( &A, e, index1, ..., indexn) 赋值操作 初始条件:A是n维数组,e为元素变量,随后是n个下标值。 操作结果:若下标不超界,则将e的值赋给所指定的A的元 素,并返回OK。 对于数组来说一旦维数确定了,每个元素的下标确定了, 那么整个数组就确定了,这样的一个数组结构除了能改变 某元素的值,其他的不能再改变。
5.2 数组的顺序表示和实现
数组类型特点: 1) 只有引用型操作,没有加工型操作; 2) 数组是多维的结构,而存储空间是一个一维的结构。 有两种顺序映象的方式。
有两种顺序映像方法: 1)以行序为主序(行优先,先行后列):先存储行号较小 的元素,行号相同者先存储列号较小的元素;
数据结构5
重点和难点
重点是学习数组类型的定义及其存储表示. 重点是学习数组类型的定义及其存储表示. 数组类型的定义及其存储表示
知识点
数组的类型定义,数组的存储表示,特殊矩阵的压缩存储表示方法, 数组的类型定义,数组的存储表示,特殊矩阵的压缩存储表示方法, 随机稀疏矩阵的压缩存储表示方法. 随机稀疏矩阵的压缩存储表示方法.
A m×n m×n
a 00 a 10 = ... a m-1,0
a 01 a11 ...
a 02 a12 ...
a m-1,1 a m-1,2
... a 0,n-1 ... a1,n-1 ... ... ... a m-1,n-1
行向量
Data Structure
2010-1-2
n阶矩阵; 阶矩阵; 非零元都集中在以主对角线为中心的带状区域中. 所有的非零元都集中在以主对角线为中心的带状区域中 所有的非零元都集中在以主对角线为中心的带状区域中.
Data Structure 2010-1-2 Page 14
压缩存储——对称矩阵 对称矩阵 压缩存储
仅存储下 三角
a11 a12 …. … ….. a1n a21 a22 …….. ……. a2n …………………. an1 an2 ……..
A m×n m×n
a 00 a 10 = ... a m-1,0
a 01 a11 ...
a 02 a12 ...
a m-1,1 a m-1,2
... a 0,n-1 ... a1,n-1 ... ... ... a m-1,n-1
Data Structure
2010-1-2
Page 6
Assign(&A, e, index1, ..., indexn)
5层数据结构
5层数据结构五层数据结构一、引言数据结构是计算机科学中重要的基础知识,它是计算机组织和管理数据的方式。
在实际应用中,我们经常需要使用各种不同的数据结构来处理和存储数据。
本文将介绍五种常见的数据结构,包括数组、链表、栈、队列和树,以帮助读者更好地理解和应用这些数据结构。
二、数组数组是一种线性数据结构,它由一组连续的内存空间组成,用于存储相同类型的数据。
数组的特点是可以通过下标快速访问元素,但插入和删除操作相对较慢。
数组的应用场景广泛,比如存储一组学生成绩、图像像素等。
三、链表链表是一种动态数据结构,它由一组节点组成,每个节点包含数据和指向下一个节点的指针。
链表的特点是插入和删除操作效率高,但访问元素需要遍历整个链表。
链表常用于需要频繁插入和删除元素的场景,比如实现队列和栈。
四、栈栈是一种特殊的数据结构,它的特点是先进后出(LIFO)。
栈可以通过压栈(push)和弹栈(pop)操作来实现数据的存储和访问。
栈常用于函数调用、表达式求值等场景。
五、队列队列是一种特殊的数据结构,它的特点是先进先出(FIFO)。
队列可以通过入队(enqueue)和出队(dequeue)操作来实现数据的存储和访问。
队列常用于实现消息队列、任务调度等场景。
六、树树是一种非线性数据结构,它由一组节点和边组成,每个节点可以有多个子节点。
树的特点是可以表示层次关系,常用于组织和管理数据。
常见的树结构包括二叉树、二叉搜索树、AVL树、红黑树等。
七、总结本文介绍了五种常见的数据结构,包括数组、链表、栈、队列和树。
这些数据结构在计算机科学和软件开发中起着重要的作用,能够有效地组织和处理数据。
掌握这些数据结构的特点和应用场景,对于提高算法和程序设计的能力至关重要。
希望读者通过本文的介绍,对这些数据结构有更加深入的理解和掌握。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构5
总分:100考试时间:100分钟
一、单项选择题
1、二叉搜索树的树型和()有关(正确答案:C)
A、输入的元素大小
B、输入的元素顺序
C、输入的元素大小和顺序
D、输入的元素类型
2、分别以下列序列构造二叉搜索树,与用其它三个序列所构造的结果不同的是( )(正确答案:C)
A、(100,80,90,60,120,110,130)
B、(100,120,110,130,80,60,90)
C、(100,60,80,90,120,110,130)
D、(100,80,60,90,120,130,110)
3、已知二叉搜索树的先序序列为:20 15 12 18 30 36 32 40,则改树的后序序列为()(正确答案:A)
A、12 18 15 32 40 36 30 20
B、12 18 15 40 36 32 30 20
C、12 15 32 40 36 30 20 18
D、12 36 18 15 32 40 30 20
4、在最坏情况下,二叉搜索树插入结点的的复杂度为()(正确答案:A)
A、n
B、n2
C、logn
D、nlogn
5、设二叉搜索树中的关键字有1到1000的整数构成,现要搜索关键字值为363的结点,下述关键字序列中不可能的搜索序列式()。
(正确答案:A)
A、2,252,401,398,330,344,307,363
B、924,220,911,244,898,258,362,363
C、
925,20,911,240,912,245,363 D、2,399,387,219,266,382,381,278,363
6、二叉搜索树在( )时其查找效率最低(正确答案:C)
A、结点太多
B、完全二叉树
C、呈单枝树
D、结点太复杂
7、二叉搜索树的查找效率与二叉树的( )有关(正确答案:C)
A、高度
B、结点的多少
C、树型
D、结点的位置
8、使用二次探查法构造散列表是为了避免()(正确答案:B)
A、基本冲突
B、基本聚集
C、二级聚集
D、二次冲突
9、均匀的散列表函数应当使关键字集合中的元素,经散列函数映射到散列表中任何位置的概率()(正确答案:C)
A、最大
B、最小
C、相等
D、一定
10、设散列表长m=14,散列函数为key mod 11 ,在存放完关键字15,38,61,84,后,存放关键字49.采用线性探查法解决冲突时的地址为()。
(正确答案:A)
A、8
B、3
C、5
D、9
11、假定有k个关键字值互相同义词,若用线性探查法把这k个关键字存入散列表中,至少要进行()次探查。
(正确答案:B)
A、k-1
B、k
C、k+1
D、k(k+1)/2
12、以( )遍历一棵二叉搜索树,将得到一个以关键字值递增排列的有序序列(正确答案:B)
A、先序
B、中序
C、后序
D、层次
13、二叉搜索树中,最小元素位于()(正确答案:A)
A、根结点的最左下结点处
B、根结点的最右下结点处
C、根结点的右结点的最左下结点处
D、根结点的左结点的最右下结点处
14、下列术语中,()不属于数据的存储结构。
(正确答案:D)
A、索引表
B、顺序表
C、散列表
D、有序表
15、二叉搜索树中,最大元素位于()(正确答案:B)
A、根结点的最左下结点处
B、根结点的最右下结点处
C、根结点的右结点的最左下结点处
D、根结点的左结点的最右下结点处
16、若采用链地址法构造散列表,散列函数为H(key)=key MOD 17,则需( ) 个链表(正确答案:A)
A、17
B、13
C、16
D、任意
17、与其它查找方法相比,哈希查找法的特点是( )(正确答案:C)
A、通过关键字比较进行查找
B、通过关键字计算记录存储地址进行查找D、通过关键字计算记录存储地址,并进行一定的比较进行查找E、通过分段逐个比较查找
18、处理哈希冲突的两类主要方法是( )(正确答案:A)
A、开放定址法和链表法
B、线性探测法和双散列函数法
C、建溢出区法和不建溢出区法
D、除余法和折叠法
19、下面关于散列表的说法正确的是()(正确答案:C)
A、散列函数构造的越好复杂越好,因为这样随机性好,冲突小
B、除留余数法是所有散列函数
中最好的C、不存在特别好与坏的散列函数,要视情况而定D、若需在散列表中删去一个元素,不管用何种方法解决冲突,都只要简单地将该元素删去即可。
20、对于哈希函数H(key)=key%13,被称为同义词的关键字是( )(正确答案:D)
A、35和41
B、23和39
C、15和44
D、25和51
二、多项选择题
1、在数组上能做的操作有()(正确答案:CD)
A、插入
B、删除
C、取值操作
D、赋值操作
2、下列不属于数组的主要操作的是()(正确答案:CD)
A、存取
B、修改
C、插入
D、删除
E、检索(查找)
3、下列存储形式中,( ) 是树的存储形式(正确答案:ABD)
A、双亲表示法
B、左子女右兄弟表示法
C、广义表表示法
D、顺序表示法
4、以下说法正确的是() (正确答案:AD)
A、二叉树的特点是每个结点至多只有两棵子树
B、二叉树的子树无左右之分
C、二叉树只
能进行链式存储D、树的结点包含一个数据元素及若干指向其子树的分支
三、判断题
1、任何一棵二叉树的平均搜索时间都小于顺序搜索同样结点的线性表的平均搜索时间。
(正确答案:B)
A、是
B、否
2、顺序查找法适用于存储结构为顺序或链接存储的线性表。
(正确答案:A)
A、是
B、否
3、在有序表A[1..12]中,采用二分查找算法查等于A[12]的元素,所比较的元素下标依次为6,9,11,12(正确答案:A)
A、是
B、否
4、对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找成功,它们的平均查找长度是相同的,而对于查找失败,它们的平均查找长度是不同的。
(正确答案:A)
A、是
B、否
5、二叉树中除叶结点外, 任一结点X,其左子树根结点的值小于该结点(X)的值;其右子树根结点的值≥该结点(X)的值,则此二叉树一定是二叉排序树。
(正确答案:B)
A、是
B、否
6、对一棵二叉排序树按前序方法遍历得出的结点序列是从小到大的序列。
(正确答案:B)
A、是
B、否
7、在二叉搜索树中插入一个新结点,总是插入到叶结点下面。
(正确答案:B)
A、是
B、否
8、在任意一棵非空二叉搜索树中,删除一个结点后又将其插入,则所得二叉搜索树与原树必定相同。
(正确答案:B)
A、是
B、否
9、当进行二叉搜索树结点的插入时,当搜索到空子树时,表示找到插入位置。
(正确答案:A)
A、是
B、否
10、在二叉搜索树中,当搜索到空子树时,表示搜索失败。
(正确答案:A)
A、是
B、否
11、已知二叉排序树的左右子树均不为空,则左子树上所有结点的值均小于它的根结点值,右子树上所有结点的值均大于它的根结点的值。
(正确答案:A)
A、是
B、否
12、N个结点的二叉排序树有多种,其中树高最小的二叉排序树是最佳的。
(正确答案:A)
A、是
B、否。