9分基本数据结构.docx
《9分基本数据结构.docx》由会员分享,可在线阅读,更多相关《9分基本数据结构.docx(17页珍藏版)》请在冰豆网上搜索。
![9分基本数据结构.docx](https://file1.bdocx.com/fileroot1/2023-6/15/5716dd3a-f3d3-450d-b355-92fad73731b9/5716dd3a-f3d3-450d-b355-92fad73731b91.gif)
9分基本数据结构
数据结构基础知识
数据结构的知识繁杂,但根据数据元素之间关系的不同特性,通常可以归类为下列四类基本结构:
(1)集合:
数据元素间的关系仅仅是同属一个集合。
(2)线性结构:
数据元素间存在一对一的关系。
(3)树形结构:
结构中的元素间的关系是一对多的关系。
(4)图结构(网状结构):
结构中的元素间的关系是多对多的任意关系。
集合结构线性结构树形结构图结构(网状结构)
一、线性结构
线性结构是N个数据元素构成的有限序列。
线性结构存储方式分为顺序存储结构和链式存储结构两种。
1、顺序存储结构
平时使用的数组就是这种结构,比如Pascal:
a:
[1..100]oflongint;C++:
inta[100]。
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
12
13
15
22
34
38
43
20
当需要在顺序存储的线性表中插入一个数据元素时,需要顺序移动后续的元素以“腾”出某个合适的位置放置新元素。
删除元素呢?
2.链式存储结构
为了更好了解顺序存储结构和链式存储结构,建议读者看看下列的flash,形象的演示应该比文字说明更好懂。
flash地址:
第二章“表”中所有flash。
二维数组与线性表
如果某一线性表,它的每一个数据元素分别是一个线性表,这样的二维表在数据实现上通常使用二维数组。
二维数组的一个形象比喻:
多个纵队形成的方块m*n
数组地址计算问题
题目描述:
已知N*(N+1)/2个数据,按行的顺序存入数组b[1],b[2],…中。
其中第一个下标表示行,第二个下标表示列。
若aij(i>=j,j=1,2,…,,n)存于b[k]中,问:
k,i,j之间的关系如何表示?
答案:
K=i*(i-1)/2+j
栈(略,见1.3)
队列
先进先出。
允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。
循环队列
头指针指向队列中队头元素的前一个位置,尾指针指示队尾元素在队列中的当前位置。
(R-F+N)modN
二、树型结构
基本概念:
根、叶子、子树。
结点的度:
结点拥有的子树数
树形结构中二叉树的内容考察最多,所以重点要复习二叉树。
三、二叉树
二叉树的概念:
二叉树的顺序存储:
二叉树的三种遍历:
(略,见1.4)
二叉树节点和层次的计算。
(重点,也是难点)
二叉树的性质
性质1:
二叉树第i层上的结点数目最多为
。
性质2:
深度为k的二叉树至多有
个结点(k≥1)。
性质3:
二叉树中,叶子节点数为n0,度为2的结点数为n2,则no=n2+1。
满二叉树和完全二叉树
1、定义:
一棵深度为k且有
个结点的二又树称为满二叉树。
特点:
每层都饱满
。
2、完全二叉树
定义:
除了最下层,其他每层都饱满,最下层的结点都集中在该层最左边的若干位置上。
特点:
①满二叉树是完全二叉树,完全二叉树不一定是满二叉树。
②在满二叉树的最下层上,从最右边开始连续删去若干结点后得到的二叉树仍然是一棵完全二叉树。
③在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,即该结点必是叶结点。
④若I为结点编号则如果I<>1,则其父结点的编号为I/2;若2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子若2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。
问题1:
画一个深度为4的满二叉树。
画一个深度为4的完全二叉树。
问题2:
具有3个结点的完全二叉树的深度为()
具有6个结点的完全二叉树的深度为()
具有8个结点的完全二叉树的深度为()
具有125个结点的完全二叉树的深度为()
具有1024个结点的完全二叉树的深度为()
证明:
设所求完全二叉树的深度为k。
深度为k得完全二叉树的前k-1层是深度为k-1的满二叉树,一共有2^(k-1)-1个结点。
由于完全二叉树深度为k,故第k层上还有若干个结点,因此该完全二叉树的结点个数:
n>2^(k-1)-1。
另一方面,假设节点最多,
由此可推出:
又因k-1和k是相邻的两个整数,故有
。
练习
1.完全二叉树对每个节点从上往下,从左往右编号,第i层的第j个节点的编号是()
A2^i+jB2^i+j-1C2^(i-1)+jD2^(i-1)+j-1
2.一棵有n个节点的完全二叉树的高度是()
A
B
C
D
3.二叉树是重要的数据结构,5个点的不同的二叉树有()个。
A22B30C40D42
4.完全二叉树的结点个数为4*N+3,则它的叶结点个数为()。
A2*NB2*N-1C2*N+1D2*N-2E2*N+2
5.满二叉树的叶结点个数为N,则它的结点总数为()。
ANB2*NC2*N–1D2*N+1E2N–1
6.在有N个叶子节点的哈夫曼树中,其节点总数为( )
A不确定 B2N-1 C2N+1 D2N
7.一棵二叉树高度为h,所有结点的度为0,或为2,则此树最少有()个结点
A2^(h-1)B2^h-1 C2^h+1 Dh+1
8.按照二叉树的定义,具有3个结点的二叉树有()种。
A3B4C5D6
9、[多选题]对一个满二叉树,m个树叶,K个分枝结点,n个结点,则:
()
A.n=K+m B.K+m=2n C.m=K-1 D.n=2K-1
10.[多选题]关于二叉树的正确说法是()。
A完全二叉树一定是满二叉树B满二叉树一定是完全二叉树
C深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点
D对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1
E在二叉树中,第i层的结点总数不超过2^(i-1);
11.完全二叉树的结点个数为11,则它的叶结点个数为()
A.4B.3C.5D.2E.6
12. 一个高度为h的二叉树最少结点数目是( )。
A2^h+1 Bh C2^h-1 D2^h E2^(h-1)
13.设有一棵k叉树,其中只有度为0和k两种结点,设n0,nk分别表示度为0和度为k的结点个数,试求出n0,nk之间的关系(n0=数学表达式,数学表达式仅含nk,k和数字)
14.如果一棵m度树中有n1个度为1的结点,n2个度为2的结点,…….有nm个度为m的结点,则该树中叶结点的的个数=______________.
参考答案
1D2B3D4E5C6B7A8C9AC10BCE11E12B
13n0=nk*(k-1)+1
14n1+n2+……=nm
四、图结构
图常用的存储结构:
邻接矩阵
欧拉图
欧拉通路(回路):
通过图G的每条边一次且仅一次,而且走遍每个结点的通路(回路),就是欧拉通路(回路)。
欧拉图:
存在欧拉回路的图就是欧拉图。
欧拉回路要求边不能重复,结点可以重复。
笔不离开纸,不重复地走完所有的边,且走过所有结点,也就是所谓的一笔画。
欧拉图或通路的判定
(1)无向连通图G是欧拉图,G不含奇数度结点(G的所有结点度数为偶数):
(定理1)
(2)非平凡连通图G含有欧拉通路,G最多有两个奇数度的结点;(定理1的推论)
(3)连通有向图D含有有向欧拉回路(即欧拉图),D中每个结点的入度=出度。
哈密顿图
哈密顿通路(回路):
通过图G的每个结点一次,且仅一次的通路(回路),就是哈密顿通路(回路).。
哈密顿图:
存在哈密顿回路的图就是哈密顿图。
历年题目
2008提高
4.完全二叉树有2*N-1的结点,则它的叶子结点数目是()。
A.N-1B.2*NC.ND.2N-1E.N/2
5.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最少要交换()次。
A.4B.5C.6D.7E.8
8.递归过程和函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。
A.队列B.多维数组C.线性表D.链表E.栈
10.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,等概率情况下,查找成功的平均查找长度(平均比较次数)是()。
A.35/11B.34/11C.33/11D.32/11E.34/10
18.设T是一棵有n个定点的树,以下说法正确的是()。
A.T是联通的,无环的B.T是联通的,有n-1条边
C.T是无环的,有n-1条边D.以上都不对
2008普及
15.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,成功查找元素19的查找长度(比较次数)是()。
A.1B.2C.3D.4
17.在32*32点阵的“字库”中,汉字“北”与“京”的字模占用字节数之和是()。
A.512B.256C.384D.128
2007提高
2.在关系数据库中,存放在数据库中的数据的逻辑结构以()为主
A.二叉树B.多叉树C.哈希表D.C+树E.二维表
9.欧拉图G是指可以构成一个闭回路的图,且图G的每一条边恰好在这个闭回路上出现一次(即一笔画成)。
在以下各个描述中,不一定是欧拉图的是()。
A.图G中没有度为奇数的顶点
B.包含欧拉环游的图(欧拉环游是指通过图中每边恰好一次的闭路径)
C.包含欧拉闭迹的图(欧拉迹是指通过图中每边恰好一次的路径)
D.存在一条回路,通过每个顶点恰好一次
E.本身闭迹的图
2006提高
8.高度为n的均衡的二叉树是指:
如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。
在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为()。
A.10B.11C.12D.13E.210–1
10.将5个数的序列排序,不论原先的顺序如何,最少都可以通过()次比较,完成从小到大的排序。
A.6B.7C.8D.9E.10
2006普及
9.在下列各种排序算法中,不是以“比较”作为主要操作的算法是()。
A.选择排序B.冒泡排序C.插入排序D.基数排序
14.高度为n的均衡的二叉树是指:
如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。
在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为()。
A.10B.11C.12D.13
16.将5个数的序列排序,不论原先的顺序如何,最少都可以通过()次比较,完成从小到大的排序。
A.6B.7C.8D.9
2005提高
1.字符串“ababacbab”和字符串“abcba”的最长公共子串是()。
A.abcbaB.cbaC.abcD.abE.bcba
4.完全二叉树的结点个数为4*N+3,则它的叶结点个数为()。
A.2*NB.2*N-1C.2*N+1D.2*N-2E.2*N+2
5.平面上有五个点A(5,3),B(3,5),C(2,1),D(3,3),E(5,1)。
以这五点作为完全图G的顶点,
每两点之间的直线距离是图G中对应边的权值。
图G的最小生成树中的所有边的权值
综合为()。
A.8B.7+5C.9D.6+5E.4+22+5
10.一位艺术史学家有20000幅1024*768的真彩色(24位)图像,如果将这些图像以位图形式保存在CD光盘上(一张CD光盘的容量按600M计算),大约需要()张CD光盘。
A.1B.10C.100D.1000E.10000
2005普及:
4.完全二叉树的结点个数为11,则它的叶结点个数为()。
A.4B.3C.5D.2E.6
5.平面上有五个点A(5,3),B(3,5),C(2,1),D(3,3),E(5,1)。
以这五点作为完全图G的顶点,每两点之间的直线距离是图G中对应边的权值。
以下哪条边不是图G的最小生成树中的边()。
A.ADB.BDC.CDD.DEE.EA
2004提高:
20、某大学计算机专业的必修课及其先修课程如下表所示:
课程代号
C0
C1
C2
C3
C4
C5
C6
C7
课程名称
高等数学
程序设计语言
离散数学
数据结构
编译技术
操作系统
普通物理
计算机原理
先修课程
C0,C1
C1,C2
C3
C3,C7
C0
C6
请你判断下列课程安排方案哪个(些)是合理的()。
A.C0,C1,C2,C3,C4,C5,C6,C7B.C0,C1,C2,C3,C4,C6,C7,C5
C.C0,C1,C6,C7,C2,C3,C4,C5D.C0,C1,C6,C7,C5,C2,C3,C4
E.C0,C1,C2,C3,C6,C7,C5,C4
2004普及
1.满二叉树的叶结点个数为N,则它的结点总数为()。
A.NB.2*NC.2*N–1D.2*N+1E.2N–1
2.在下图中,从顶点()出发存在一条路径可以遍历图中的每条边一次,而且仅遍历一次。
A.A点B.B点C.C点D.D点E.E点
数据结构与算法
一个向量第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地址是(B)。
A)110B)108C)100D)109
设有一个含有13个元素的Hash表(0~12),Hash函数是:
H(key)=key%13,其中%是求余数运算。
用线性探查法解决冲突,则对于序列(2、8、31、20、19、18、53、27),18应放在第几号格中(B)。
A)5B)9C)4D)0
在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的(B)倍。
A)1/2B)1C)2D)4
要使1...8号格子的访问顺序为:
8、2、6、5、7、3、1、4,则下图中的空格中应填入(C)。
1
2
3
4
5
6
7
8
4
6
1
-1
7
3
2
A)6B)OC)5D)3
设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若出队的顺序为e2,e4,e3,e6,e5,e1,则栈S的容量至少应该为(B)。
A)2B)3C)4D)5
若已知一个栈的入栈顺序是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1是n,则Pi是(C)
A)i B)n-1 C)n-i+1 D)不确定
以下哪一个不是栈的基本运算(B)
A)删除栈顶元素 B)删除栈底的元素
C)判断栈是否为空D)将栈置为空栈
下面关于算法的错误说法是(B)
A)算法必须有输出 B)算法必须在计算机上用某种语言实现
C)算法不一定有输入D)算法必须在有限步执行后能结束
在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找12,所需的关键码比较的次数为(C)
A)2 B)3 C)4 D)5
无向图G=(V,E),其中V={a,b,c,d,e,f}E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)}对该图进行深度优先遍历,得到的顶点序列正确的是(D)
A)a,b,e,c,d,f B)a,c,f,e,b,d C)a,e,b,c,f,d D)a,b,e,d,f,c
已知一棵二叉树的结点名为大写英文字母,其中序与后序遍历的顺序分别为:
CBGEAFHDIJ与CGEBHFJIDA则该二叉树的先序遍历的顺序为:
ABCEGDFHIJ
某数列有1000个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索(binary-search),在最坏的情况下,需检视( B )个单元。
A.1000 B.10 C.100 D.500
线性表若采用链表存贮结构,要求内存中可用存贮单元地址( D )
A.必须连续 B.部分地址必须连续 C.一定不连续 D.连续不连续均可
下列叙述中,正确的是( D )
A.线性表的线性存贮结构优于链表存贮结构 B.队列的操作方式是先进后出
C.栈的操作方式是先进先出 D.二维数组是指它的每个数据元素为一个线性表的线性表
已知,按中序遍历二叉树的结果为:
abc
问:
有多少种不同形态的二叉树可以得到这一遍历结果,并画出这些二叉树。
5种
根据Nocomachns定理,任何一个正整数n的立方一定可以表示成n个连续的奇数的和。
例如:
13=1
23=3+5
33=7+9+11
43=13+15+17+19
在这里,若将每一个式中的最小奇数称为X,那么当给出n之后,请写出X与n之间的关系表达式:
n^2-n+1
设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为( D )
A.r-fB.r-f+1C.(r-f) MOD n+1D.(r-f+n) MOD n
表达式(1+34)*5-56/7的后缀表达式为( C )。
A)1+34*5-56/7 B)-*+1345/567 C)134+5*567/-
D)1345*+567/- E)134+5567-*/
已知元素(8,25,14,87,51,90,6,19,20),问这些元素以怎样的顺序进入栈,才能使出栈的顺序满足:
8在51前面;90在87的后面;20在14的后面;25在6的前面;19在90的后面。
( D )。
(题意是全部进栈,再依次出栈)
A)20,6,8,51,90,25,14,19,87
B)51,6,19,20,14,8,87,90,25
C)19,20,90,7,6,25,51,14,87
D)6,25,51,8,20,19,90,87,14
E)25,6,8,51,87,90,19,14,20
假设我们用d=(a1,a2,...,a5),表示无向图G的5个顶点的度数,下面给出的哪(些)组d值合理( BE )。
A){5,4,4,3,1} B){4,2,2,1,1} C){3,3,3,2,2}
D){5,4,3,2,1} E){2,2,2,2,2}
完全二叉树的结点个数为4*N+3,则它的叶结点个数为(E)。
A.2*NB.2*N-1C.2*N+1D.2*N-2E.2*N+2
二叉树T的宽度优先遍历序列为ABCDEFGHI,已知A是C的父结点,D是G的
父结点,F是I的父结点,树中所有结点的最大深度为3(根结点深度设为0),可知F
的父结点是(C)。
A.无法确定B.BC.CD.DE.E
将数组{32,74,25,53,28,43,86,47}中的元素按从小到大的顺序排列,每次可以交换任
意两个元素,最少需要交换___5___次。
取火柴游戏的规则如下:
一堆火柴有N根,A、B两人轮流取出。
每人每次可以取1根或
2根,最先没有火柴可取的人为败方,另一方为胜方。
如果先取者有必胜策略则记为1,先取者没有必胜策略记为0。
当N分别为100,200,300,400,500时,先取者有无必胜策略的标记顺序为__11011__(回答应为一个由0和/或1组成的字符串)
在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是(BD)。
A)希尔排序B)起泡排序C)插入排序D)选择排序