(0012)数据结构复习思考题
- 格式:doc
- 大小:279.50 KB
- 文档页数:20
中南大学现代远程教育课程考试(考试)复习题及参考答案数据结构(使用教材:余腊生编著,人民邮电出版社出版,《数据结构—基于C++模板类的实现》一、判断题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的结点有nk个,则有n0=nk+1。
[ ] 18.折半搜索只适用于有序表,包括有序的顺序表和有序的链表。
一、单项选择题(本大题共71小题,每小题2分,共142分)1、一个对象序列的排序码为{46,79,56,38,40,84},采用快速排序以位于最左位置的对象为基准而得到的第一次划分结果为()。
()A.{38,46,79,56,40,84}B.{38,79,56,46,40,84}C.{40,38,46,56,79,84}D.{38,46,56,79,40,84}标准答案:C2、广义表((a),a)的表头是()。
()A.aB.bC.(a)D.((a))标准答案:C3、数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是()。
()A.80B.100C.240D.270标准答案:C4、在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行()。
()A.HL=p;p->next=HL;B.p->next=HL;HL=p;C.p->next=HL;p=HL;D.p->next=HL->next;HL->next=p;标准答案:B5、一个具有n个顶点的无向完全图的边数为()。
()A.(n+1)/2B.n(n-1)/2C.n(n-1)D.n(n+1)标准答案:B6、如果待排序序列中两个数据元素具有相同的值,在排序后它们的位置发生颠倒,则称该排序是不稳定的。
下列选项中,()就是不稳定的排序方法。
()A.起泡排序B.归并排序C.直接插入法排序D.简单选择排序标准答案:D7、按照二叉树的定义,具有3个结点的二叉树有()种。
()A.3B.4C.5D.6标准答案:C8、设有1000个元素,用二分法查找时,最大比较次数是()。
()A.1B.7C.10D.25标准答案:C9、树适合用来表示()。
()A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据标准答案:C10、设有两个串p和q,求p在q中首次出现的位置的运算称作()。
数据结构复习题及参考答案《数据结构》课程复习资料一、填空题:1.设需要对5个不同的记录关键字进行排序,则至少需要比较________次,至多需要比较__________次。
2.设二叉排序树的高度为h,则在该树中查找关键字key最多需要比较_________次。
3.设在长度为20的有序表中进行二分查找,则比较一次查找成功的结点数有_________个,比较两次查找成功有结点数有_________个。
4.数据结构从逻辑上划分为三种基本类型:___________、__________和___________。
5.在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。
6.向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度___________。
7.在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为________,整个堆排序过程的时间复杂度为________。
8.在快速排序、堆排序、归并排序中,_________排序是稳定的。
9.在有n个叶子结点的哈夫曼树中,总结点数是_______。
10.一棵树T采用二叉链表存储,如果树T中某结点为叶子结点,则在二叉链表BT中所对应的结点一定_______。
11.3.已知数组A[10][10]为对称矩阵,其中每个元素占5个单元。
现将其下三角部分按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,6]对应的地址是_______。
12.在有n个结点的无向图中,其边数最多为_______。
13.取出广义表A=(x,(a,b,c,d))中原子x的函数是_______。
14.对矩阵采用压缩存储是为了___ ____。
15.带头结点的双循环链表L为空表的条件是_______。
16.设线性表中元素的类型是实型,其首地址为1024,则线性表中第6个元素的存储位置是。
数据结构复习题汇总黄⽼师:题型结构如下:单项选择题,15⼩题,30分;填空题,5⼩题,10分;综合应⽤题,50分(树、图、查找)算法设计与分析,2选1,10分(线性结构)试卷中⼀些算法只给英⽂名称;考查范围(⿊体字为建议的重点考查内容;红字为备注;蓝字为拟纳⼊的考研⼤纲内容)⼀、绪论(⼀)算法、数据结构基本概念(⼆)算法分析中O(f(n))符号的含义(三)时间复杂度简单分析表⽰⼆、线性表(⼀)线性表的定义和基本操作(⼆)线性表的实现1.顺序存储2.链式存储3.线性表的应⽤三、栈、队列(⼀)栈和队列的基本概念(⼆)栈和队列的顺序存储结构(三)栈和队列的链式存储结构(四)栈和队列的应⽤四、树与⼆叉树(⼀)树的概念(⼆)⼆叉树1.⼆叉树的定义及其主要特征2.⼆叉树的顺序存储结构和链式存储结构3.⼆叉树的遍历及应⽤(三)树、森林1. 森林与⼆叉树的转换2. 树的存储结构;3.树和森林的遍历4.线索⼆叉树的基本概念和构造(四)⼆叉树的应⽤1.哈夫曼(Huffman)树和哈夫曼编码2.⼆叉排序树五、图(⼀)图的基本概念(⼆)图的存储及基本操作1.邻接矩阵法2.邻接表法(三)图的遍历1.深度优先搜索2.⼴度优先搜索(四)图的基本应⽤1.最⼩(代价)⽣成树2.最短路径3.拓扑排序4.关键路径六、查找(⼀)查找的基本概念(⼆)顺序查找法(三)折半查找法(四)⼆叉查找树及其基本操作(只考察基本概念)(五)平衡⼆叉树(只考察基本概念)(六)散列(Hash)表(七)查找算法的分析及应⽤七、排序(⼀)排序的基本概念(⼆)直接插⼊排序(三)⽓泡排序(bubble sort)(四)简单选择排序(五)希尔排序(shell sort)(六)快速排序(七)堆排序(⼋)⼆路归并排序(merge sort)(九)各种排序算法的⽐较(⼗)排序算法的应⽤选择题1、顺序队列的出队操作,正确修改队⾸指针的是( B )(A)sq.front = (sq.front+1)%maxsize; (B)sq.front = sq.front+1;(C)sq.rear = (sq. rear +1)%maxsize; (D)sq.rear = sq. rear +1;2、⾮空的循环单链表head的尾结点(由指针p指)满⾜( C )(A)p->next = NULL (B)p = NULL (C)p->next = head (D)p = head3、在单键表中,删除p所指结点的直接后继,其中指针修改为( A )(A)p->next = p->next ->next; (B)p = p->next; p->next = p->next->next;(C)p->next = p->next; (D)p = p->next ->next;4、通常要求同⼀逻辑结构中的所有数据元素具有相同的特性,这意味着( B )(A)数据元素具有同⼀特点(B)不仅数据元素所包含的数据项的个数要相同,⽽且对应数据项的类型也要⼀致(C)每个数据元素都⼀样(D)数据元素所包含的数据项的个数要相等5、关于线性表,下列说法正确的是( D )(A)每个元素都有⼀个直接前驱和直接后继(B)线性表中⾄少要有⼀个元素(C)表中诸元素的排列顺序必须是由⼩到⼤或由⼤到⼩的(D)除第⼀元素和最后⼀个元素外,其余每个元素都有⼀个且仅有⼀个直接前驱和直接后继6、带头结点的单链表,其表头指针为head,则该单链表为空的判断条件是( B )(A)head == NULL (B)head->next == NULL(C)head->next == head (D)head !== NULL7、含n个顶点的连通图中的任意⼀条简单路径,其长度不可能超过(C )(A)1 (B)n/2 (C)n-1 (D)n8、设有⼀个顺序栈S,元素S1, S2, S3, S4, S5, S6依次进栈,如果6个元素出栈的顺序是S2, S3, S4, S6, S5, S1,则栈的容量⾄少应该是( B )(A)2 (B)3 (C)5 (D)69、设深度为k的⼆叉树上只有度为0和度为2的结点,则这类⼆叉树上所含结点的总数最少为( C )个(A)k+1 (B)2k (C)2k -1 (D)2k +110、从具有n个结点的单链表中查找指定结点时,若查找每个结点的概率相等,在查找成功的情况下,平均需要⽐较( D )个结点。
数据结构复习题参考答案数据结构是计算机科学的基础课程之一,旨在培养学生的数据结构设计和分析能力。
本文将为读者提供一些常见的数据结构复习题的参考答案,旨在帮助读者更好地掌握数据结构的知识。
一、栈和队列1. 栈的特点是"先进后出",请给出栈的实现代码。
答案:```class Stack:def __init__(self):self.items = []def is_empty(self):return len(self.items) == 0def push(self, item):self.items.append(item)def pop(self):if not self.is_empty():return self.items.pop()else:return Nonedef peek(self):if not self.is_empty():return self.items[-1]else:return Nonedef size(self):return len(self.items)```2. 队列的特点是"先进先出",请给出队列的实现代码。
答案:```class Queue:def __init__(self):self.items = []def is_empty(self):return len(self.items) == 0def enqueue(self, item):self.items.append(item)def dequeue(self):if not self.is_empty():return self.items.pop(0)else:return Nonedef peek(self):if not self.is_empty():return self.items[0]else:return Nonedef size(self):return len(self.items)```二、链表1. 链表是一种常见的数据结构,请给出链表的节点定义。
数据结构复习题(附答案)1. 快速排序在最坏情况下的时间复杂度为( D )。
A.O(log2n) B.O(nlog2n) C.O (n) D. O (n2)2.设⼀棵⼆叉树的深度为k,则该⼆叉树中最多有( D )个结点。
A. 2k-1B. 2kC.2k-1D. 2k-13.⼆叉树中第i(i≥1)层上的结点数最多有( C )个。
A. 2iB. 2iC. 2i-1D. 2i-1 4.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为( A )。
A. p->next=p->next->nextB. p=p->nextC. p=p->next->nextD. p->next=p5.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,⼀个元素出栈后即进⼊队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量⾄少应该是( C )。
A. 6B. 4C. 3D. 26.设有以下四种排序⽅法,则( B )的空间复杂度最⼤。
A. 冒泡排序B. 快速排C. 堆排序D. 希尔排序7.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为( B )。
A. 3B. 4C. 5D. 18.根据⼆叉树的定义可知⼆叉树共有( B )种不同的形态。
A. 4B. 5C. 6D. 79.对⼀个算法的评价,不包括如下( A )⽅⾯的内容。
A.并⾏性 B.健壮性和可读性 C.正确性 D.时空复杂度10.在⼆叉排序树中插⼊⼀个结点的时间复杂度为( C )。
A.O(1) B.O(n) C.O(log2n) D.O(n2)11. 队列是⼀种( B )的线性表。
A.先进后出B.先进先出 C.只能插⼊D.只能删除12.采⽤开放定址法处理散列表的冲突时,其平均查找长度( C )。
A.低于链接法处理冲突 B. 与链接法处理冲突相同C.⾼于链接法处理冲突 D.⾼于⼆分查找13.设有序顺序表中有n个数据元素,则利⽤⼆分查找法查找数据元素X的最多⽐较次数不超过( A )。
一、算法设计题(每题15分,共60分)答题要求:①用自然语言说明所采用算法的思想;②给出每个算法所需的数据结构定义,并做必要说明;③写出对应的算法程序,并做必要的注释。
1、有一个带头结点的单链表,每个结点包括两个域,一个是整型域info,另一个是指向下一个结点的指针域next。
假设单链表已建立,设计算法删除单链表中所有重复出现的结点,使得info域相等的结点只保留一个。
3、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个人按顺时针方向围坐成一圈,现从第s个人开始按顺时针方向报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…,如此重复直到所有的人全部出列为止。
现要求采用循环链表结构设计一个算法,模拟此过程。
4、编程实现单链表的就地逆置。
23.在数组 A[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个.5、设计一个尽可能的高效算法输出单链表的倒数第K个元素。
3、假设以I和O分别表示入栈和出栈操作。
栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。
(15分)(1)下面所示的序列中哪些是合法的?A. IOIIOIOOB. IOOIOIIOC. IIIOIOIOD. IIIOOIOO(2)通过对(1)的分析,写出一个算法,判定所给的操作序列是否合法。
若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。
5、设从键盘输入一整数的序列:a1, a2, a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。
算法应对异常情况(入栈满等)给出相应的信息。
设有一个背包可以放入的物品重量为S,现有n件物品,重量分别为W1,W2,...,W n。
数据结构复习题(附答案)数据结构复习题(附答案)数据结构是计算机科学中非常重要的一门课程,其涉及到对数据的组织、存储和管理方法的研究。
在学习数据结构的过程中,我们通常需要进行大量的练习和复习以加深对各种数据结构和算法的理解。
本文将为大家提供一些数据结构的复习题,并附有详细的答案解析。
一、栈和队列1. 给定一个字符串,判断其中的括号序列是否合法。
例如,"{([])}"是合法的括号序列,而"{[)]}"则是非法的。
答案:使用栈的数据结构可以很方便地解决这个问题。
遍历字符串,遇到左括号就将其入栈,遇到右括号就判断对应的左括号是否与栈顶元素相匹配,如果匹配则将栈顶元素出栈,继续比较下一个字符。
最后,栈为空则表示括号序列合法。
2. 设计一个队列,实现队列的基本操作:入队、出队、获取队头元素和判断队列是否为空。
答案:可以使用一个数组来实现队列,使用两个指针front和rear分别指示队头和队尾的位置。
入队操作时,将元素添加到rear指向的位置,并将rear后移一位;出队操作时,将front后移一位;获取队头元素时,返回front指向的位置的元素;判断队列是否为空可以通过比较front和rear来确定。
3. 反转一个单链表。
答案:使用三个指针prev、curr和next来实现链表的反转。
初始时,将prev指向null,curr指向头节点,next指向curr的下一个节点。
然后,将curr的next指向prev,将prev指向curr,将curr指向next,再将next指向next的下一个节点。
重复这个操作,直到链表反转完成。
4. 判断一个单链表中是否存在环。
答案:使用快慢指针的方法可以判断一个单链表中是否存在环。
如果存在环,那么快指针最终会追上慢指针;如果不存在环,那么快指针最终会达到链表的末尾。
三、树和图5. 给定一个二叉树,编写一个算法来判断它是否是平衡二叉树。
答案:平衡二叉树的定义是指二叉树的每个节点的左子树和右子树的高度差不超过1。
一、选择题。
(每小题2分,共40分)(1) 计算机识别.存储和加工处理的对象被统称为____A____。
A.数据B.数据元素C.数据结构D.数据类型(2) 数据结构通常是研究数据的____ A _____及它们之间的联系。
A.存储和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑(3) 不是数据的逻辑结构是____ A ______。
A.散列结构B.线性结构C.树结构D.图结构(4) 数据结构被形式地定义为<D,R>,其中D是____ B _____的有限集,R是____ C _____的有限集。
A.算法B.数据元素C.数据操作D.逻辑结构(5) 组成数据的基本单位是____ A ______。
A.数据项B.数据类型C.数据元素D.数据变量(6) 设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是____ A ______。
A.线性结构B.树型结构C.图型结构D.集合(7) 数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为___ C ____。
A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构(8) 在数据结构的讨论中把数据结构从逻辑上分为___ A ____。
A.内部结构与外部结构B.静态结构与动态结构C.线性结构与非线性结构D.紧凑结构与非紧凑结构(9) 对一个算法的评价,不包括如下____ B _____方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度(10) 算法分析的两个方面是__ A ____。
A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性(11) 线性表是具有n个___ C _____的有限序列(n≠0)。
A.表元素B.字符C.数据元素D.数据项(12) 线性表的存储结构是一种____ B ____的存储结构。
数据结构复习题 一.单选题 1.在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为( ) A.n-i+1 B.n-i C.i D.i-1 2.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( ) A.顺序表 B.用头指针表示的单循环链表 C.用尾指针表示的单循环链表 D.单链表 3.一棵有16结点的完全二叉树,对它按层编号,则对编号为7的结点X,它的双亲结点及右孩子结点的编号分别为() A.2,14 B.2,15 C.3,14 D.3,15 4.在顺序栈中删除一个元素,至少要移动()元素。 A.0 B. 1 C. n/2 D. n 5.采用三元组表存储稀疏矩阵,是为了()。 A.节省存取时间 B. 节省存储空间 C. 提高对矩阵元素的访问速度 D. 提高对矩阵运算的可靠性 6.高度为h的二叉树最多有()个节点。 A.2h-1 B. 2h C. 2h-1 D. 2h-1+1 7.直接选择排序在最好情况下的时间复杂度是()。 A.O(n) B. O(nlog2n) C. O(1) D. O(n2) 8. 在最好和最坏情况下的时间复杂度均为O(nlogn)且稳定的排序方法是( ) A.快速排序 B.堆排序 C.归并排序 D.希尔排序 9.设p指向单链表中的一个结点,s指向待插入的结点,则下述程序段的功能是()s -> next = p -> next; p -> next = s; t = p -> data; p -> data = s -> data; s ->data = t; A.结点*p与结点*s的数据域互换 B.在p所指结点的元素之前插入元素 C.在p所指结点的元素之后插入元素 D.在结点*p之前插入结点*s 10.希尔排序的增量序列必须是() A.递增的B.随机的 C.递减的D.非递减的 11.如果在排序过程中,每次均将一个待排序的记录按关键字大小加入到前面已经有序的子表中的适当位置,则该排序方法称为() A.插入排序B.归并排序 C.冒泡排序D.堆排序 12.若要在单链表中的结点*p之后插入一个结点*s,则应执行的语句是()。 A. s->next=p->next; p->next=s; B. p->next=s; s->next=p->next; C. p->next=s->next; s->next=p; D. s->next=p; p->next=s->next; 13.若要在O(1)的时间复杂度上实现两个循环链表头尾相接,则应对这两个循环链表各设置一个指针,分别指向()。 A. 各自的头结点 B. 各自的尾结点 C. 各自的第一个元素结点 D. 一个表的头结点,另一个表的尾结点 14.二维数组A[20][10]采用列优先的存储方法,若每个元素占据两个存储单元,且第一个元素的首地址为200,则元素A[8][9]的存储地址为()。 A. 574 B. 576 C. 578 D. 580 15.对广义表L=((a,b),c,d)进行操作tail(head(L))的结果是()。 A. (c,d) B. (d) C. b D. (b) 16.已知一颗树的前序序列为ABCDEF,后序序列为CEDFBA,则对该树进行层次遍历得到的序列为()。 A. ABCDEF B. ABCEFD C. ABFCDE D. ABCDFE 17.已知含有10个结点的二叉排序树是一颗完全二叉树,则该二叉树在等概率情况下查找成功的平均查找长度为()。 A. 1.0 B. 2.9 C. 3.4 D. 5.5 18. 在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( ) A. n-i+1 B. i C. i+1 D. n-i 19. 若不带头结点的单链表的头指针为head,则该链表为空的判定条件是( ) A. head==NULL B. head->next==NULL C. head!=NULL D. head->next==head 20. 引起循环队列队头位置发生变化的操作是( ) A. 出队 B. 入队 C. 取队头元素 D. 取队尾元素 21. 下列图示的顺序存储结构表示的二叉树是( )
(0012)《数据结构》复习思考题一、选择题1、某二叉树的先序序列和后序序列正好相同,则该二叉树一定是( )的二叉树。
A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子2.下列排序算法中,时间复杂度不受数据初始状态影响,恒为O(log2n)的是( )A.堆排序B.冒泡排序C.直接选择排序D.快速排序3.下列排序算法中,( )算法可能会出现下面情况:初始数据有序时,花费的时间反而最多。
A.堆排序B.冒泡排序C.快速排序D.SHELL排序4.一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )A. 2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 25.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为( )A. r-fB. r-f+1C. (r-f) mod n+1D. (r-f+n) mod n6.若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用( )存储方式最节省时间。
A.单链表B.双链表C.带头结点的双循环链表D.单循环链表7.在有n个结点的二叉链表中,值为非空的链域的个数为( )A. n-1B. 2n-1C. n+1D. 2n+18.一棵左右子树均不空的二叉树在先序线索化后,其空指针域数为( )A. 0B. 1C. 2D.不确定9.数组A[5][6]的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为( )A. 1140B. 1145C. 1120D. 112510.求最短路径的DIJKSTRA算法的时间复杂度为( )A. O(n)B. O(n+e)C. O(n2)D. O(n×e)11.对有18个元素的有序表作二分查找,则查找A[3]的比较序列的下标依次为( )A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,312.快速排序算法在最好情况下的时间复杂度为( )A. O(n)B. O(nlog2n)C. O(n2)D. O(log2n)13.下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是( )A.堆排序B.冒泡排序C.快速排序D.直接插入排序14.二叉树在线索化后,仍不能有效求解的问题是( )A.先序线索二叉树中求先序后继B.中序线索二叉树中求中序后继C.中序线索二叉树中求中序前趋D.后序线索二叉树中求后序后继15.DFS算法的时间复杂度为( )A. O(n)B. O(n3)C. O(n2)D. O(n+e)16.队列操作的原则是( )A.先进先出B.后进先出C.只能进行插入D.只能进行删除17.有64个结点的完全二叉树的深度为( )(根的层次为1)。
A. 8B. 7C. 6D. 518.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为-1,右孩子的平衡因子为0,则应作( )型调整以使其平衡。
A. LL B. LRC. RLD. RR19.数据表A中有10000个元素,如果仅要求求出其中最大的10个元素,则采用( )排序算法最节省时间。
A.堆排序B.希尔排序C.快速排序D.直接选择排序1.给出不同的输入序列建造二叉排序树,一定得到不同的二叉排序树。
( )2.由于希尔排序的最后一趟与直接插入排序过程相同,因此前者一定比后者花费的时间多。
( )3.在对链队列作出队操作时,不会改变front指针的值。
( )4.若一个栈的输入序列为123…n,其输出序列的第一个元素为n,则其输出序列的每个元素a i一定满足a i=n-i+1(i=1,2...,n)( )5.二叉树中的叶子结点就是二叉树中没有左右子树的结点。
( )6.一棵树中的叶子结点数一定等于与其对应的二叉树中的叶子结点数。
( )7.有向图用邻接矩阵表示后,顶点i的人度等于邻接矩阵中第i列的元素个数。
8.有向图的邻接表和逆邻接表中的结点数一定相同。
( )9.删除二叉排序树中一个结点,再重新插入上去,一定能得到原来的二叉排序树。
( )10.图G的拓扑序列唯一,则其弧数必为n-1(其中n为G的顶点数)。
( )11、二路归并排序的核心操作是将两个有序序列归并为一个有序序列。
( )12、二叉树只能采用二叉链表来存储。
( )13、数据项是数据基本单位( )14、一个无环有向图的拓扑序列必然是唯一的( )15、任何一个无向连通图的最小生成树只有一个( )16、已知完全二叉树有64个结点,则整个二叉树没有度为1结点。
( )17、线性表的插入和删除的时间复杂度和存储结构没有关系( )18、空格串和空串是一样的( )19、哈夫曼树一定是满二叉树。
( )20、队列只能采用链式存储方式。
( )1、在有n个叶子结点的哈夫曼树中,其结点总数为。
2、将下三角矩阵A「1..8,1..8」的下三角部分逐行地存储到起始地址为1000的内存单元中,已知每个元素占4个单元,则A[7,5]的地址为。
3、高度为5的三阶B-树至少有个结点。
4、具有100个结点的完全二叉树的深度为。
5、在插入和选择排序中,若初始数据基本正序,则选用_________;若初始数据基本反序,则选用__ _______。
、6、二叉排序树上,结点的平衡因子定义为该结点_____ ___子树的高度减去该结点_________子树的高度。
7、请列举四种处理哈希冲突的方法:、、、。
8、一个无向图完全图中,共有条边。
9、对如何一颗二叉树,如果其终端结点数为n0,度为2的结点数为n2,则它们之间的关系应为:。
10、下列排序算法中,稳定的排序算法是(选择排序,堆排序,快速排序,直接插入排序)11、矩阵压缩存储的基本思想是:____ _____的多个元素只分配一个存储空间,_____ ____不分配空间。
12、在有n个叶子结点的哈夫曼树中,总结点数是__ _____。
13、已知数组A[10][10]为对称矩阵,其中每个元素占5个单元。
现将其下三角部分按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,6]对应的地址是_______。
14、通常从四个方面评价算法的质量:___ ______、_________、___ ______和___ ______。
17、散列技术既是一种___ _____方式,又是一种___ _____方法。
18、在索引非顺序文件中,记录不按关键字顺序排列,因此对每个记录要建立一个索引项,这样的索引表称为_____ ____索引。
19、文件的修改包括:__ _______、_______和更新记录三种操作。
20、树的三种常用存储结构是:、____ _____和___ ______。
四、综合题1、设散列函数为 H (K )= K mod 7,散列表的地址空间为 0,…, 6,开始时散列表为空,用线性探测法解决冲突,请画出依次插入键值23,14,9,6,30,12,18后的散列表2、已知序列{15,18,60,41,6,32,83,75,95}。
请给出采用冒泡排序法对该序列作升序排序时的每一趟的结果。
3、已知串a=′1234+-*′、b=′1+2-3*4′,请用串的各种基本运算将串a 转换为串b 。
规定:运算中不能引入新的字符串,所有的字符串只能从串a 中取得。
4、字符a, b, c, d, e 出现的概率分别为:0.12, 0.40, 0.15, 0.08, 0.25,采用哈夫曼算法构造哈夫曼树进行编码。
5、分别画出和下列树对应的各个二叉树。
6、请给出下图深度优先偏历和广度优先偏历的结果7、假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别是0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
试为这8个字母设计哈夫曼编码8、请画出下图的生成森林9、求最短路径10、有序表按关键字排列如下:7,14,18,21,23,29,31,35,38,42,46,49,52 在表中查找关键码为14和22的数据元素。
11、记录的关键码序列为:63,90,70,55,67,42,98,83,10,45,58,则构造一棵二叉排序树的过程如下12、1个元素的关键码分别为 18,27,1,20,22,6,10,13,41,15,25。
选取关键码与元素位置间的函数为 f(key)=key mod 116363 907090 63 7090 63 5570 90 63 55677090 63 55 67 427090 63 55 67 429870 90 63 55 678398 4270 90 6355 678398 1042 42 98 70 90 634555 836710 58 42 98 70 90 6345 55 83671013、下面是一趟快速排序的算法,请将算法中空缺的部分填充完整int partition (sqlist&L, int low, int high){L.r[0]= (1) ;Pivokey=L.r[low].key;While ( (2) ){while (low<high && L.r[high].key>=pivokey)(3) ;L.r[low]=L.r[high];While (low<high && L.r[low].key<=pivokey)++low;(4) ;}L.r[low]=L.r[0];}14、阅读下面的算法,说明其运算结果。
void Bitree_Revolute(Bitree T){if(T) {T->lchild <--> T->rchild;if(T->lchild) Bitree_Revolute(T->lchild);if(T->rchild) Bitree_Revolute(T->rchild); }}//Bitree_Revolute15、用深度优先搜索遍历如图1所示的无向图,试给出以A为起点的顶点访问序列(同一个顶点的多个邻点,按字母顺序访问),并给出一棵最小生成树及所采用的算法和其时间复杂度。
(14分)图1五、算法题1、编写按层次顺序(同一层自左至右)遍历二叉树的算法。
2 、试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构。
且树中结点的关键字均不同3、设哈希函数为H(key),用链地址法解决冲突,H的值域为0,…,n-1,构造的哈希表类型如下:typedef struct{keytype key;link next;}*link;link openhash[n];请写一函数完成在哈希表HP中查找关键字值等于K的结点的工作,若查找成功,返回该结点的指针,否则返回空指针。