数据结构复习题及参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构复习题及参考答案
中南⼤学现代远程教育课程考试复习题及参考答案
数据结构
⼀、判断题:
1.数组是⼀种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。
[ ] 2.链式存储在插⼈和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。
[ ] 3.在⽤循环单链表表⽰的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。
[ ] 4.通常递归的算法简单、易懂、容易编写,⽽且执⾏的效率也⾼。
[ ] 5.⼀个⼴义表的表尾总是⼀个⼴义表。
[ ] 6.当从⼀个⼩根堆(最⼩堆)中删除⼀个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为⽌。
[ ] 7.对于⼀棵具有n个结点,其⾼度为h的⼆叉树,进⾏任⼀种次序遍历的时间复杂度为O(h)。
[ ] 8.存储图的邻接矩阵中,邻接矩阵的⼤⼩不但与图的顶点个数有关,⽽且与图的边数也有关。
[ ] 9.直接选择排序是⼀种稳定的排序⽅法。
[ ] 10.30、闭散列法通常⽐开散列法时间效率更⾼。
[ ] 11.有n个结点的不同的⼆叉树有n!棵。
[ ] 12.直接选择排序是⼀种不稳定的排序⽅法。
[ ] 13.在2048个互不相同的关键码中选择最⼩的5个关键码,⽤堆排序⽐⽤锦标赛排序更快。
[ ] 14.当3阶B_树中有255个关键码时,其最⼤⾼度(包括失败结点层)不超过8。
[ ] 15.⼀棵3阶B_树是平衡的3路搜索树,反之,⼀棵平衡的3路搜索树是3阶⾮B_树。
[ ] 16.在⽤散列表存储关键码集合时,可以⽤双散列法寻找下⼀个空桶。
在设计再散列函数时,要求计算出的值与表的⼤⼩m互质。
[ ] 17.在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有n k个,则有n0=n k+1。
[ ] 18.折半搜索只适⽤于有序表,包括有序的顺序表和有序的链表。
[ ] 19.如果两个串含有相同的字符,则这两个串相等。
[ ] 20.数组可以看成线性结构的⼀种推⼴,因此可以对它进⾏插⼊、删除等运算。
[ ] 21.在索引顺序表上实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,⽽且与每⼀块中元素个数有关。
[ ] 22.在顺序表中取出第i个元素所花费的时间与i成正⽐。
[ ] 23.在栈满情况下不能作进栈运算,否则产⽣“上溢”。
[ ] 24.⼆路归并排序的核⼼操作是将两个有序序列归并为⼀个有序序列。
[ ] 25.对任意⼀个图,从它的某个顶点出发,进⾏⼀次深度优先或⼴度优先搜索,即可访问图的每个顶点. [ ] 26.⼆叉排序树或者是⼀棵空⼆叉树,或者不是具有下列性质的⼆叉树:若它的左⼦树⾮空,则根结点的值⼤于其左孩⼦的值;若它的右⼦树⾮空,则根结点的值⼩于其右孩⼦的值。
[ ] 27.在执⾏某个排序算法过程中,出现了排序码朝着最终排序序列位置相反⽅向移动,则该算法是不稳定的。
[ ] 28.⼀个有向图的邻接表和逆邻接表中表结点的个数⼀定相等。
[ ] 29.数据的基本单位是数据项。
30.带权的⽆向连通图的最⼩⽣成树是唯⼀的。
[ ] 31.数组元素之间的关系,既不是线性的,也不是树形的。
[ ] 32.对于有n个对象的待排序序列进⾏归并排序,所需平均时间为O(nlog2n)。
[ ] 33.⽤邻接矩阵法存储⼀个图所需的存储单元数⽬与图的边数有关。
[ ] 34.在霍夫曼编码中,当两个字符出现的频率相同时,其编码也相同,对于这种情况应当特殊处理。
[ ] 35.线性表采⽤顺序存储表⽰时,必须占⽤⼀⽚连续的存储单元。
[ ] 36.由树转化成⼆叉树,其根的右⼦⼥指针总是空的。
[ ] 37.树形选择排序是⼀种不稳定的排序⽅法。
[ ] 38.中序遍历⼆叉树是⼀个有序序列。
[ ]
39.装载因⼦是散列表的⼀个重要参数,它反映了散列表的装满程度。
[ ]
⼆、选择题:
1.在⼀个长度为n的顺序表的任⼀位置插⼊⼀个新元素的渐进时间复杂度为 [ ]
A. O(n)
B. O(n/2)
C. O(1)
D. O(n2)
2.带头结点的单链表first为空的判定条件是: [ ]
A. first==NULL
B. first⼀>1ink==NULL
C. first⼀>link==first
D. first!=NUlL
3.当利⽤⼤⼩为n的数组顺序存储⼀个队列时,该队列的最⼤长度为 [ ]
A. n-2
4.在系统实现递归调⽤时需利⽤递归⼯作记录保存实际参数的值。
在传值参数情形,需为对
应形式参数分配空间,以存放实际参数的副本;在引⽤参数情形,需保存实际参数的 [ ],在被调⽤程序中可直接操纵实际参数。
A.空间
B.副本
C.返回地址
D.地址
5.在⼀棵树中,[ ]没有前驱结点。
A.分⽀结点
B.叶结点
C.树根结点
D.空结点
6.在⼀棵⼆叉树的⼆叉链表中,空指针域数等于⾮空指针域数加 [ ]
A. 2
B. 1
C. 0
D. -1
7.对于长度为9的有序顺序表,若采⽤折半搜索,在等概率情况下搜索成功的平均搜索长度为[ ]
的值除以9。
A. 20
B. 18
C. 25
D. 22
8.在有向图中每个顶点的度等于该顶点的 [ ]
A.⼊度
B.出度
C.⼊度与出度之和
D.⼊度与出度之差
9.在基于排序码⽐较的排序算法中,[ ]算法的最坏情况下的时间复杂度不⾼于O(n1og2n)。
A.起泡排序
B.希尔排序
C.归并排序
D.快速排序
C.相同
D.不清楚
11.设有⼀个含200个表项的散列表,⽤线性探查法解决冲突,按关键码查询时找到⼀个表项的平均探查次数不超过1.5,则散列表项应能够⾄少容纳[ ]个表项。
(设搜索成功的平均搜索长度为ASL={1+l/(1⼀α)}/2,其中α为装填因⼦)
A. 400
B. 526
C. 624
D. 676
12.堆是⼀个键值序列{k1,k2,…..k n},对I=1,2,….|_n/2_|,满⾜[ ]
A. ki≤k2i≤k2i+1
B. k i
C. k i≤k2i且k i≤k2i+1(2i+1≤n)
D. k i≤k2i或k i≤k2i+1(2i+1≤n)
13.若将数据结构形式定义为⼆元组(K,R),其中K是数据元素的有限集合,则R是K上 [ ]
A.操作的有限集合
B.映象的有限集合
C.类型的有限集合
D.关系的有限集合
14.在长度为n 的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为 [ ]
A. n-i+1
B. I
C. i+1
D. n-i
15.若不带头结点的单链表的头指针为 head,则该链表为空的判定条件是 [ ]
A. head==NULL
B. head->next==NULL
C. head!=NULL
D. head->next==head
16.引起循环队列队头位置发⽣变化的操作是 [ ]
A.出队
B.⼊队
17.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进⾏,则不可能出现的出栈序列是 [ ]
A. 2,4,3,1,5,6
B. 3,2,4,1,6,5
C. 4,3,2,1,5,6
D. 2,3,5,1,6,4
18.字符串通常采⽤的两种存储⽅式是 [ ]
A.散列存储和索引存储
B.索引存储和链式存储
C.顺序存储和链式存储
D.散列存储和顺序存储
19.设主串长为n,模式串长为m(m≤n),则在匹配失败情况下,朴素匹配算法进⾏的⽆效位移次数为 [ ]
A. m
B. n-m
C. n-m+1
D. n
20.⼆维数组A[12][18]采⽤列优先的存储⽅法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[9][7]的地址为 [ ]
A. 429
B. 432
C. 435
D. 438
21.对⼴义表L=((a,b),(c,d),(e,f))执⾏操作tail(tail(L))的结果是 [ ]
A. (e,f)
B. ((e,f))
C. (f)
D. ( )
22.下列图⽰的顺序存储结构表⽰的⼆叉树是 [ ]
23. n个顶点的强连通图中⾄少含有 [ ]
A. n-1条有向边
B. n条有向边
C. n(n-1)/2条有向边
A.(19,23,56,34,78,67,88,92)
B.23,56,78,66,88,92,19,34)
C.(19,23,34,56,67,78,88,92)
D.(19,23,67,56,34,78,92,88)
25.若在9阶B-树中插⼊关键字引起结点分裂,则该结点在插⼊前含有的关键字个数为 [ ]
A. 4
B. 5
C. 8
D. 9
26.由同⼀关键字集合构造的各棵⼆叉排序树 [ ]
A.其形态不⼀定相同,但平均查找长度相同
B.其形态不⼀定相同,平均查找长度也不⼀定相同
C.其形态均相同,但平均查找长度不⼀定相同
D.其形态均相同,平均查找长度也都相同
27.ISAM⽂件和VSAM⽂件的区别之⼀是[ ]
A.前者是索引顺序⽂件,后者是索引⾮顺序⽂件
B.前者只能进⾏顺序存取,后者只能进⾏随机存取
C.前者建⽴静态索引结构,后者建⽴动态索引结构
D.前者的存储介质是磁盘,后者的存储介质不是磁盘
28.下列描述中正确的是 [ ]
A.线性表的逻辑顺序与存储顺序总是⼀致的
B.每种数据结构都具备三个基本运算:插⼊、删除和查找
C.数据结构实质上包括逻辑结构和存储结构两⽅⾯的内容
D.选择合适的数据结构是解决应⽤问题的关键步骤
29.下⾯程序段的时间复杂度是 [ ]
I=s=0
While(s
{I++;
s+=I;
}
A.O(1) B. O(n) C.O(log2n) D.O(n^2)
30.对于顺序表来说,访问任⼀节点的时间复杂度是 [ ] A.O(1) B.O(n) C.O(log2n) D.O(n^2)
31.在具有n个节点的双链表中做插⼊、删除运算,平均时间复杂度为 [ ] A.O(1) B.O(n) C.O(log2n) D.O(n^2)
33.⼀个栈的⼊栈序列是a,b,c,则栈的不可能输出序列是 [ ]
A. acb
B.abc
C.bca
D.cab
34.循环队列是空队列的条件是 [ ] A.Q->rear==Q->front B.(Q->rear+1)%maxsize==Q->front
C.Q->rear==0
D.Q->front==0
35.设s3="I AM",s4="A TERCHER"。
则strcmp(s3,s4)=[ ]
A.0
B.⼩于0
C.⼤于0
D.不确定
36.⼀维数组的元素起始地址loc[6]=1000,元素长度为4,则loc[8]为 [ ]
A.1000
B.1004
C.1008
D.8
37.⼴义表((a,b),c,d)的表尾是 [ ]
A.a B.b C.(a,b) D.(c,d)
38.对于⼆叉树来说,第I层上⾄多有____个节点 [ ]
A.2i
B. 2i -1
C.2i-1
D.2i-1-1
39.某⼆叉树的前序遍历序列为ABDGCEFH,中序遍历序列为DGBAECHF,则后序遍历序列为 [ ]
A.BDGCEFHA
B.GDBECFHA
C.BDGAECHF
D.GDBEHFCA
41.已知⼀个图如下所⽰,若从顶点a出发按宽度搜索法进⾏遍历,则可能得到的⼀种顶点序列为[ ]
42.堆的形状是⼀棵 [ ]
A.⼆叉排序树
B.满⼆叉树
C.完全⼆义树
D.平衡⼆叉树
43.排序⽅法中,从未排序序列中挑选元素,并将其依次放⼊已排序序列(初始时为空)的⼀
端的⽅法,称为 [ ]
A.希尔排序
B.归并排序
C.插⼊排序
D.选择排序
44.采⽤顺序查找⽅法查找长度为n的线性表时,每个元素的平均查找长度为 [ ]
A.n
B.n/2
C.(n+1)/2
D.(n-1)/2
45.散列查找是由键值______确定散列表中的位置,进⾏存储或查找 [ ]
A.散列函数值
B.本⾝
C.平⽅
D.相反数
46.顺序⽂件的缺点是 [ ]
A.不利于修改
B.读取速度慢
C.只能写不能读
D.写⽂件慢
47.索引⽂件的检索⽅式是直接存取或按_____存取 [ ]
A.随机存取
48.若需要利⽤形参直接访问实参,则应把形参变量参数说明为 [ ]
A.指针
B.引⽤
C.传值
D.常值
49.以下说法错误的是 [ ]
A.抽象数据类型具有封装性
D.抽象数据类型具有信息隐蔽性
C.使⽤抽象数据类型的⽤户可以⾃⼰定义对抽象数据类型中数据的各种操作
D.抽象数据类型的⼀个特点是使⽤与实现分离
50.设有⼀个n×n的对称矩阵A,将其上三⾓部分按⾏存放在⼀个⼀维数组B中,A[0][0]存
放于B[0]中,那么第i⾏的对⾓元素A[I][i]存放于B中( ) 处。
[ ]
A.(i+3)*i/2 D.(i+1)*i/2
C.(2n—i+1)*i/2
D.n(2n—i⼀1)*i/2
51.已知单链表A长度为m,单链表B长度为n,若将B联接在A的末尾,其时间复杂度应为 [ ] A.O(1) B.O(m) C.O(n) D.O(m+n)
52.假定⼀个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为 [ ] A.front==rear B,front! =NULL C.rear! =NULL D.front==NULL
53.设有⼀个递归算法如下 int fact(intn){//n⼤于等于0
if(n<=0)return 1;
else return n*fact(n⼀);
}
则计算fact(n)需要调⽤该函数的次数为 [ ] A.n B.n+1 C.n+2 D.n-l
54.在⼀棵⾼度为h(假定树根结点的层号为0)的完全⼆叉树中,所含结点个数不⼩于[ ]。
A.2h—1 B.2h⼗1 C.2h⼀1 D.2h
55.⼀棵树的⼴义表表⽰为a(b,c(e,f(g)),d),当⽤左⼦⼥⼀右兄弟链表表⽰时,右指针
域⾮空的结点个数为 [ ] A.1 B.2 C.3 D.4
56.向具有n个结点的、结构均衡的⼆叉搜索树中插⼊⼀个元素的时间复杂度⼤致为 [ ]
A.O(1) B.O(log2n) C.O(n) D.O(nlog2n)
57.具有n个顶点的有向⽆环图最多可包含[ ]条有向边。
A.n—1 B.n C.n(n—1)/2 D.n(n–1)
58.图的⼴度优先搜索类似于树的[ ]次序遍历。
D.层次
59.如果将所有中国⼈按照⽣⽇(不考虑年份,只考虑⽉、⽇)来排序,那么使⽤下列排序算法中[ ]
算法最快。
A.归并排序
B.希尔排序
C.快速排序
D.基数排序
60.下⾯算法的时间复杂度为[ ]
int f(unsigned int n) {
if(n==0||n==1)return 1;
else return n * f(n-1);
}
A.0(1)
B.O(n)
C.O(n2)
D.O(n!)
61.队列的删除操作是在( )进⾏。
[ ]
A.队⾸
B.队尾
C.队前
D.对后
62.对长度为10的顺序表进⾏搜索,若搜索前⾯5个元素的概率相同,均为1/8,
搜索后⾯5个元素的概率相同,均为3/40,则搜索任⼀元素的平均搜索长度为 [ ] A.5.5 B.5 C. 39/8 D.19/4 63.每次从⽆序表中挑选出⼀个最⼩或最⼤元素,把它交换到有序表的⼀端,此种
排序⽅法叫做( )排序。
[ ]
A.插⼊
B.堆
C.快速
D.归并
64.在⼀个长度为n的顺序表中顺序查找⼀个值为x的元素时。
在等概率的情况
下,搜索成功时间元素的平均⽐较次数为 [ ]
A.n
65.在⼀棵平衡⼆叉排序树中,每个结点的平衡因⼦的取值范围是 [ ]
A.-1~1
B.-2~2
C.1~2
D.0~1
66.在⼀棵完全⼆叉树中,若编号为i的结点存在左⼦⼥,则左⼦⼥结点的编号为( )假定树根结点的编号为0。
[ ]
A.2i
B.2i-1
C.2i+1
D.2i+2
67.在散列查找中,平均查找长度主要与( )有关。
[ ]
A.散列表长度
B.散列元素的个数
C.装填因⼦
D.处理冲突⽅法
68.带头结点的单链表first为空的判定条件是 [ ]
A.first==NULL;
B.first->link==NULL
C.first->link==first
D.first!=NULL
69.对于⼀棵具有n个结点的⼆叉树,对应⼆叉链表中指针总数为( )个。
[ ]
A.n+2
B.n2
C.n
D.2n
70.设有⼀个⼴义表A((x,(n,b)),(x,(9,b),y)),运算Head(Head(Tail(A)))的执⾏结果为 [ ] A.x B (a,b) C.(x,(a ,b)) D. y
71.在⼀个具有n个顶点的⽆向图中,要连通所有顶点则⾄少需要( )条边。
[ ]
A.n+2
B.n-1
C.n
A.p=L; p->link=L;
B.p->link=L; p=L;
C.p->link=L; L=P;
D.L=p; p->link=L;
73.在平均情况下速度最快的排序⽅法为 [ ]
A.直接选择排序
B.归并排序
C.堆排序
D.快速排序
74.设循环队列的结构是:
struct Queue {
DataType data[MaxSize];
int front, rear;
};
若有⼀个Queue类型的队列Q.试问判断队列满的条件应为 [ ]
A.Q. from==Q, rear;
B.Q. front==Q. rear==MaxSize;
C.Q. front+Q, rear= =MaxSize;
D.Q. front==(Q, rear+l) % MaxSize;
三、填空题:
1.若频繁地对线性表进⾏插⼊与删除操作,该线性表应采⽤______________存储结构。
2.在双链表中,每个结点有两个指针域,⼀个指向____ __,另⼀个指向___ __。
3.空格串是__ __,其长度等于_ ___。
4.⼀个图的表⽰法是唯⼀的,⽽表⽰法是不唯⼀的。
5.对于长度为n的关键字有序的线性表,若进⾏顺序查找,则时间复杂度为__ __;若采⽤⼆分法查找,则时间复杂度为_ ___;
6.设线性表中元素的类型是实型,其⾸地址为1024,则线性表中第6个元素的存储位置是。
7.对于顺序存储的栈,因为栈的空间是有限的,在进⾏运算时,可能发⽣栈的上溢,在进
⾏运算时,可能发⽣栈的下溢。
8.在双向链表中,每个结点有两个指针域,⼀个指向____ __,另⼀个指向___ __。
9.由⼀棵⼆叉树的前序序列和可唯⼀确定这棵⼆叉树。
10.折半查找的存储结构仅限于___ _,且是_ ___。
11.对于⼀个具有n个顶点和e条边的连通图,其⽣成树中的顶点数和边数分别为和。
12.分析下⾯算法(程序段),给出最⼤语句频度___ _,该算法的时间复杂度是___ _。
{ for (i=1; i<=n; i++)
for (j=1; j<=i ; j++) cout<
}
13.稀疏矩阵的压缩存储结构,⼀种是________表⽰法,⽽另⼀种是________表⽰法。
14.数据结构包括____________和____________。
前者可以⽤⼀个⼆元组B=(K,R),来表⽰,K是
____________,R是____________。
15.线形表有两种存储结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充:
____________可以随机存取;____________不可以随机存取; ____________插⼊和删除⽐较⽅便。
16.在单链表中,删除指针P所指向结点的后续结点的语句____________。
17.删除带头结点的单循环链表Head的第⼀个结点的操作是____________;删除不带头结点的单循环链表的第⼀个结点的操作是____________。
18.从⼀维数组a[n]中顺序查找出⼀个最⼤值元素的时间复杂度为________,输出⼀个⼆维数组b[m][n]
中所有元素值的时间复杂度为________。
19.在⼀个稀疏矩阵中,每个⾮零元素所对应的三元组包括该元素的、和三
项。
20.对于⼆分查找所对应的判定树,它既是⼀棵________,⼜是⼀棵________。
21.在⼀个图中,所有顶点的度数之和等于所有边数的________倍。
22.当向⼀个⼩根堆插⼊⼀个具有最⼩值的元素时,该元素需要逐层调整,直到被调整到
位置为⽌。
23.递归算法包括____________和 ____________两部分。
24.在树中存在唯⼀的⼀个结点,我们把这个结点称为________。
25.线性表的两种存储结构⼀种为顺序存储,另⼀种为________。
26.队列允许在________进⾏删除,在________进⾏插⼊。
27.叶⼦结点的度为________,满2 叉树的第k 层具有________个结点。
28.图的遍历可分为遍历,遍历。
29.在线性结构中,第⼀个结点________前驱结点,其余每个结点有且只有________个前驱结点;最后⼀个结点________后续结点,其余每个结点有且只有________个后续结点。
30.在树形结构中,树根结点没有________结点,其余每个结点有且只有________个直接前驱结点,叶⼦结点没有________结点,其余每个结点的直接后续结点可以________。
31.在图形结构中,每个结点的前驱结点数和后续结点数可以________。
32.线性结构中元素之间存在________关系,树形结构中元素之间存在________关系,图形结构中元素之间存在________关系。
33.算法的五个重要特性是________,________,________,________,________。
34.在⼀个单链表中p所指结点之前插⼊⼀个s (值为e)所指结点时,可执⾏如下操作:
q=head;
while (q->next!=p) q=q->next;
s= new Node; s->data=e;
q->next= ; //填空
s->next= ; //填空
35.在⼀个单链表中删除p所指结点的后继结点时,应执⾏以下操作:
q= p->next;
p->next= _ ___; //填空
delete ; //填空
36.两个串相等的充分必要条件是____。
37.⼆维数组A[10][20]采⽤列序为主⽅式存储,每个元素占⼀个存储单元并且A[0][0]的存储地址是200,
则A[6][12]的地址是____。
38.⼆维数组A[10..20][5..10]采⽤⾏序为主⽅式存储,每个元素占4个存储单元,并且A[10][5]的存
储地址是1000,则A[18][9]的地址是____。
39.求下列⼴义表操作的结果:
(1) GetTail[GetHead[((a,b),(c,d))]]; ________
(2) GetTail[GetHead[GetTail[((a,b),(c,d))]]] ________
40.n个顶点的连通图⾄少____条边。
41.在⽆权图G的邻接矩阵A中,若(vi,vj)或<vi,vj>属于图G的边集合,则对应元素A[i][j]等于____,
否则等于____。
42.已知⼀个有向图的邻接矩阵表⽰,计算第i个结点的⼊度的⽅法是____。
43.已知⼀个图的邻接矩阵表⽰,删除所有从第i个结点出发的边的⽅法是____。
44.如果含n个顶点的图形成⼀个环,则它有________棵⽣成树。
45.⼀个⾮连通⽆向图,共有28条边,则该图⾄少有________个顶点。
46.遍历图的过程实质上是________。
采⽤邻接矩阵时,BFS遍历图的时间复杂度为________,DFS遍历
图的时间复杂度为________,两者不同之处在于________,反映在数据结构上的差别是________。
47.顺序查找法的平均查找长度为____;折半查找法的平均查找长度为____;哈希表查找法采⽤链接法处
理冲突时的平均查找长度为____。
48.在各种查找⽅法中,平均查找长度与结点个数n⽆关的查找⽅法是____。
49.折半查找的存储结构仅限于____,且是____。
50.假设在有序线性表A[1..20]上进⾏折半查找,则⽐较⼀次查找成功的结点数为____,则⽐较⼆次查找
成功的结点数为____,则⽐较三次查找成功的结点数为____,则⽐较四次查找成功的结点数为____,则⽐较五次查找成功的结点数为____,平均查找长度为____。
51.对于长度为n的线性表,若进⾏顺序查找,则时间复杂度为____;若采⽤折半法查找,则时间复杂度
为____;
52.已知有序表为(12,18,24,35,47,50,62,83,90,115,134),当⽤折半查找90时,需进⾏________
次查找可确定成功;查找47时,需进⾏________次查找成功;查找100时,需进⾏________次查找才能确定不成功。
53.⼆叉排序树的查找长度不仅与________有关,也与⼆叉排序树的________有关。
54.⼀个⽆序序列可以通过构造⼀棵________树⽽变成⼀个有序树,构造树的过程即为对⽆序序列进⾏排
序的过程。
55.在利⽤快速排序⽅法对⼀组记录(54,38,96,23,15,72,60,45,83)进⾏快速排序时,递归调
⽤⽽使⽤的栈所能达到的最⼤深度为____,共需递归调⽤的次数为____,其中第⼆次递归调⽤是对____⼀组记录进⾏快速排序。
56.在堆排序,快速排序和归并排序中,若只从存储空间考虑,则应⾸先选取____⽅法,其次选取____⽅
法,最后选取____⽅法;若只从排序结果的稳定性考虑,则应选取____⽅法;若只从平均情况下排序最快考虑,则应选取____⽅法;若只从最坏情况下排序最快并且要节省内存考虑,则应选取____⽅法。
57.属性与服务相同的对象构成类,类中的每个对象称为该类的________·
58.在类的继承结构中,位于上层的类叫做________,其下层的类则叫做________类.
59.若设串S=“documentHash.doc\O”,则诙字符串S的长度为________·
60.线性表的链接存储只能通过________顺序访问。
61.设链栈中结点的结构为(data,link),栈顶指针为top,则向该链栈插⼊、—个新结点*p时,应依
次执⾏________和________操作。
62.⼴义表的深度定义为⼴义表中括号被嵌套的________·
63.在⼀棵⾼度为h的完全⼆叉树中,最少含有________个结点.假定树根结点的⾼度为O.
64.从有序集合(12,10,30,43,56,78,02,95)中折半搜索56和98元素时,其搜索长度分别为________
和。
65.中缀表达⽰3+X*(2.4/5-6)所对应的后缀表达⽰为______________。
66.在⼀棵⾼度为h的3叉树中,最多含有_______结点。
67.假定⼀棵⼆叉树的结点数为18,则它的最⼩深度为________,最⼤深度为_______。
68.在⼀棵⼆叉搜索树中,每个分⽀结点的左⼦树上所有的结点的值⼀定___________该结点的值,右⼦
树上所有结点的值⼀定__________该结点的值。
69.当向⼀个⼩根堆插⼊⼀个具有最⼀⼩值的元素时,该元素需要逐层_______调整,直到被调整到
_______位置为⽌。
70.表⽰图的三种存储结构为_________________、________________和________________。
71.对⽤邻接距阵表⽰的具有n个顶点和e条边的图形进⾏任⼀种遍历时,其时间复杂度为__________,
对⽤邻接表表⽰的图进⾏任⼀种遍历时,其时间复杂度为______________。
72.从有序表(12,18,30,43,56,78,82,95)中依次⼆分查找43和56元素时,其查找长度分别为
___________和__________。
73.假定对长度n=144的线性表进⾏索引查找,并假定每个⼦表的长度均为n,则进⾏索引查找的平均查
找长度为__________,时间复杂度为___________。
74.⼀棵B-树中的所有叶⼦结点均处在_____________上。
75.n个(n>o)顶点的连通⽆向图中各顶点的度之和最少为。
76.设图的顶点数为n,则求解最短路径的Dijkstra算法的时间复杂度为。
77.给定⼀组数据对象的关键码为{46,79,56,38,40,84},则利⽤堆排序⽅法建⽴的初始最⼤堆的堆
⾸和堆尾的关键码分别为和。
78.在索引表中,若⼀个索引项对应数据对象表中的⼀个表项,则称此索引为稠密索引;若对应数据对象
表中的若⼲表项,则称此索引为索引。
四、计算与算法应⽤题:
1.给定表(119,14,22,1,66,21,83,27,56,13,10),请按表中元素的顺序构造⼀棵平衡⼆
叉树,并求其在等概率情况下查找成功的平均长度。
2.对下⾯的有向图从顶点V1开始进⾏遍历,试画出遍历得到的DFS⽣成森林和BFS⽣成森林。
V1
V3V4V2
V5
V6V7V8
3.已知⼀个有向图的顶点集V和边集G分别为:
V={a,b,c,d,e,f,g,h}
E={,,,,,,,,,};
假定该图采⽤邻接矩阵表⽰,则分别写出从顶点a出发进⾏深度优先搜索遍历和⼴度优先搜索遍历得到的顶点序列。
4.已知⼀棵⼆叉树的中序和后序序列如下,求该⼆叉树的⾼度(假定空树的⾼度为-1)和度为2、度为
l 及度为0的结点个数。
中序序列:c,b,d,e,a,g,i,h,j,f
后序序列:c,e,d,b,i,j,h,g,f,a
⾼度:
度为2的结点数:
度为1的结点数:
度为0的结点数:
5.设散列表的长度为13,散列函数为H(h)= k%13,给定的关键码序列为19,14,23,01,68,20,
84,27。
试画出⽤线性探查法解决冲突时所构成的散列表。
0 1 2 3 4 5 6 7 8 9 10 11 12
6.对7个关键字进⾏快速排序,在最好的情况下仅需进⾏10次关键字的⽐较。
(1)假设关键字集合为{1,2,3,4,5,6,7},试举出能达到上述结果的初始关键字序列;
(2)对所举序列进⾏快速排序,写出排序过程。
7.已知⼀个带权图的顶点集V和边集G分别为:
V={0,l,2,3,4,5,6};
E={(0,1)19,(0,2)10,(0,3)14,(1,2)6,(1,5)5,(2,3)26,(2,4)15,(3,4)18,(4,5)6,(4,6)6,(5,6)12);其中顶点对后的值表⽰对应边的权。
试根据迪克斯特拉(Dijkstra)算法求出从顶点0到其余各项点的最短路径。
8.如图所⽰⼆叉树,回答下列问题。
9.对于下图,若按照克鲁斯卡尔算法产⽣最⼩⽣成树,写出得到的各条边的次序。
10.画出在⼀个初始为空的AVL树中依次插⼊3,1,4,6,9,8,5,7时每⼀插⼊后AVL树的形态。
若做了某种旋转,说明旋转的类型。
然后,给出在这棵插⼊后得到的AVL树中删去根结点后的结果。
11.已知⼀组记录的排序码为( 46 , 79 , 56 , 38 , 40 , 80, 95 , 24 ),写出对其进⾏快速排序的每⼀次划分结果。
12.⼀个线性表为 B= ( 12 , 23 , 45 , 57 , 20 , 03 , 78 , 31 , 15 , 36 ),设散列表为 HT[0..12] ,散列函数为 H ( key ) = key % 13 并⽤线性探查法解决冲突,请画出散列表,并计算等概率情况下查找成功的平均查找长度。
13.已知⼀棵⼆叉树的前序遍历的结果序列是 ABECKFGHIJ ,中序遍历的结果是 EBCDAFHIGJ ,试写出这棵⼆叉树的后序遍历结果。
14.假定对线性表(38,25,74,52,48,65,36)进⾏散列存储,采⽤H(K)=K%9作为散列函数,若分别采⽤线性探查法和链接法处理冲突,则对应的平均查找长度分别为和。
15.假定⼀组记录的排序码为(46,79,56,38,40,80,25,34,57,21),则对其进⾏快速排序的第⼀次划分后⼜对左、右两个⼦区间分别进⾏⼀次划分,得到的结果为:。
16.下图是带权的有向图G的邻接表表⽰法。
从结点V1出发,深度遍历图G所得结点序列为( A ),⼴度遍历图G所得结点序列为( B );G的⼀个拓扑序列是( C );从结点V1到结点V8的最短路径为( D );从结点V1到结点V8的关键路径为( E )。
其中A、B、C的选择有:
(1)V1,V2,V3,V4,V5,V6,V7,V8
(2)V1,V2,V4,V6,V5,V3,V7,V8
(3)V1,V2,V4,V6,V3,V5,V7,V8
(4)V1,V2,V4,V6,V7,V3,V5,V8
(5)V1,V2,V3,V8,V4,V5,V6,V7
(6)V1,V2,V3,V8,V4,V5,V7,V6
(7)V1,V2,V3,V8,V5,V7,V4,V6
D、E的选择有:
①V1,V2,V4,V5,V3,V8
②V1,V6,V5,V3,V8
③V1,V6,V7,V8
④V1,V2,V5,V7,V8
17.画出对长度为10的有序表进⾏折半查找的判定树,并求其等概率时查找成功的平均查找长度。
18.已知如图所⽰的有向⽹,试利⽤Dijkstra算法求顶点1到其余顶点的最短路径,并给出算法执⾏过程中各步的状态。
19.假定⼀棵普通树的⼴义表表⽰为a(b(e),c(f(h,i),g),d),分别写出先根,后根,按层遍历的结果。
先根:
后根:
按层:
20.已知⼀个带权图的顶点集V和边集G分别为:
V={0,1,2,3,4,5,6,7};
E={(0,1)8,(0,2)5,(0,3)2,(1,5)6,(2,3)25,(2,4)13,(3,5)9};
则求出该图的最⼩⽣成树的权。
最⼩⽣成树的权:
21.对于线性表(18,25,63,50,41,32,90,66)进⾏散列存储时,若选⽤H(K)=K%11作为散列函数,则散列地址为0的元素有______个,散列地址为3的元素有______个,散列地址为8的元素有______个。
22.假定⼀组记录的排序码为(46,79,56,38,40,80,25,34),在对其进⾏快速排序的过程中,
进⾏第⼀次划分后得到的排序码序列为 ________________________________。
23.将关键码53,78,65,17,87,09,81,45,23依次插⼊到⼀棵初始为空的⼆叉搜索树中,画出
每插⼊⼀个关键码后的⼆叉搜索树。
24.设有150个记录要存储到散列表中,并利⽤线性探查法解决冲突,要求找到所需记录的平均⽐较次
数不超过2次。
试问散列表需要设计多⼤?(设α是散列表的装载因⼦,则有ASLsucc=(1+1/(1-α))/ 2)。
25.设待排序⽂件的关键码为(86,75,50,40,90,33,15,42)进⾏希尔排序(按关键码值递增顺序),请给出⼀趟排序后的结果。
26.以数据集{7,19,2,6,32,3,21,10}为叶⼦结点的权值,
(1)构造⼀棵哈夫曼树(要求写出构造树时的各具体步骤);
(2)编写各叶⼦结点的哈夫曼编码;
27.已知如图所⽰的有向图,请给出该图的:
(1)每个顶点的⼊/出度;
(2)邻接矩阵;
(3)邻接表。
另外,还要求⼤家熟练掌握Huffman树的构建⽅法,树与⼆叉树之间的转换,以及各种排序⽅法的排
序过程。
五、算法设计题:
1.已知深度为h的⼆叉树以⼀维数组BT(1:2h-1)作为其存储结构。
请写⼀算法,求该⼆叉树中叶结点
的个数。
2.编写在以BST为树根指针的⼆叉搜索树上进⾏查找值为item的结点的⾮递归算法,若查找item带回
整个结点的值并返回true,否则返回false。
bool Find(BtreeNode*BST,ElemType&item)
3.根据下⾯函数原型,编写⼀个递归算法,统计并返回以BT为树根指针的⼆叉树中所有。