广工数据结构复习样题答案

合集下载

数据结构习题及参考答案

数据结构习题及参考答案

习题1一、单项选择题1.数据结构是指()。

A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。

A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构3.树形结构是数据元素之间存在一种()。

A.一对一关系B.多对多关系C.多对一关系D.一对多关系4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。

for(i=1; i<=n; i++)for(j=i; j<=n; j++)x++;A.O(1)B.O(2n)C.O(n)D.O(3n)5.算法分析的目的是(1),算法分析的两个主要方面是(2)。

(1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性(2) A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。

(1) A.计算方法 B.排序方法C.解决问题的有限运算序列D.调度方法(2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性C.确定性,有穷性和稳定性D.易读性,稳定性和安全性7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。

A.低B.高C.相同D.不好说8.数据结构作为一门独立的课程出现是在()年。

A.1946B.1953C.1964D.19689.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。

A.正确B.错误C.前半句对,后半句错D.前半句错,后半句对10.计算机内部数据处理的基本单位是()。

A.数据B.数据元素C.数据项D.数据库二、填空题1.数据结构按逻辑结构可分为两大类,分别是______________和_________________。

2.数据的逻辑结构有四种基本形态,分别是________________、__________________、__________________和__________________。

(完整版)数据结构复习题(附答案)

(完整版)数据结构复习题(附答案)

(完整版)数据结构复习题(附答案)⼀、算法设计题(每题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。

数据结构试题库及答案

数据结构试题库及答案

数据结构试题库及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用()来存储。

A. 链表B. 栈C. 队列D. 数组答案:D2. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C3. 在二叉树的遍历算法中,先访问根节点,然后遍历左子树,最后遍历右子树的遍历方式是()。

A. 先序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:A4. 哈希表的冲突解决方法不包括以下哪种?A. 链地址法B. 线性探测法C. 二分查找法D. 再散列法答案:C5. 在图的遍历算法中,广度优先搜索(BFS)使用的辅助数据结构是()。

A. 栈B. 队列C. 堆D. 链表答案:B6. 下列关于堆的描述中,错误的是()。

A. 堆是一种特殊的完全二叉树B. 堆中的每个节点的值都大于其子节点的值C. 堆可以用于实现优先队列D. 堆的插入操作的时间复杂度为O(log n)答案:B7. 在一个长度为n的数组中,使用二分查找算法查找一个元素的最坏情况下的时间复杂度是()。

A. O(1)B. O(n)C. O(n^2)D. O(log n)答案:D8. 以下哪个数据结构不是线性结构?A. 链表B. 栈C. 队列D. 二叉树答案:D9. 以下哪个算法是动态查找表?A. 直接索引B. 顺序查找C. 二分查找D. 哈希表答案:D10. 在图的表示方法中,邻接矩阵表示法的缺点是()。

A. 占用空间大B. 占用空间小C. 插入和删除操作复杂D. 遍历操作复杂答案:A二、填空题(每题2分,共20分)1. 在一个长度为n的数组中,使用顺序查找算法查找一个元素的时间复杂度为________。

答案:O(n)2. 一个具有n个节点的完全二叉树的高度为________。

答案:log2(n) + 1(向上取整)3. 一个长度为n的链表,删除一个节点的时间复杂度为________。

答案:O(1)4. 在图的表示方法中,邻接表表示法的缺点是________。

(完整版)数据结构练习题及参考答案

(完整版)数据结构练习题及参考答案

数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。

A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。

A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。

for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。

for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。

int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。

2. 数据的存储结构被分为__________、_________、__________和__________四种。

3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。

4. 一种抽象数据类型包括__________和__________两个部分。

5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。

数据结构复习题及答案

数据结构复习题及答案

数据结构复习题及答案数据结构复习题及答案数据结构是计算机科学中的重要基础,它涉及到存储、组织和管理数据的方法和技术。

在学习数据结构的过程中,我们经常会遇到各种复习题,通过解答这些题目可以巩固对数据结构的理解和掌握。

本文将给出一些常见的数据结构复习题及其答案,希望对读者的学习有所帮助。

一、数组1. 给定一个整数数组,如何找到数组中的最大值和最小值?答案:可以使用遍历数组的方式,依次比较每个元素与当前的最大值和最小值,更新最大值和最小值即可。

2. 给定一个整数数组和一个目标值,如何判断数组中是否存在两个数的和等于目标值?答案:可以使用两层循环遍历数组,依次判断每两个数的和是否等于目标值。

二、链表1. 如何反转一个单链表?答案:可以使用三个指针prev、curr和next,分别表示当前节点的前一个节点、当前节点和当前节点的下一个节点。

通过遍历链表,每次将当前节点的next指针指向prev节点,然后更新prev、curr和next指针,直到遍历到链表的末尾。

2. 如何判断一个链表是否有环?答案:可以使用快慢指针的方法。

定义两个指针slow和fast,初始时都指向链表的头节点。

slow指针每次移动一步,fast指针每次移动两步。

如果链表中存在环,那么两个指针最终会相遇;如果链表中不存在环,那么fast指针会先到达链表的末尾。

三、栈和队列1. 如何使用栈实现队列?答案:可以使用两个栈来实现队列。

一个栈用来存储入队的元素,另一个栈用来存储出队的元素。

当需要入队时,直接将元素压入第一个栈;当需要出队时,如果第二个栈为空,则将第一个栈中的元素依次弹出并压入第二个栈,然后从第二个栈中弹出元素;如果第二个栈不为空,则直接从第二个栈中弹出元素。

2. 如何使用队列实现栈?答案:可以使用两个队列来实现栈。

一个队列用来存储元素,另一个队列用来辅助操作。

当需要入栈时,直接将元素入队;当需要出栈时,将队列中的元素依次出队并入辅助队列,直到队列中只剩下一个元素,然后将该元素出队;然后交换两个队列的角色,使得辅助队列成为主队列,主队列成为辅助队列。

数据结构复习题(附答案)

数据结构复习题(附答案)

数据结构复习题(附答案)数据结构复习题(附答案)数据结构是计算机科学中非常重要的一门课程,其涉及到对数据的组织、存储和管理方法的研究。

在学习数据结构的过程中,我们通常需要进行大量的练习和复习以加深对各种数据结构和算法的理解。

本文将为大家提供一些数据结构的复习题,并附有详细的答案解析。

一、栈和队列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 分,共20分)1.对一个算法的评价,不包括如下(B )方面的内容。

A.健壮性和可读性B.并行性C.正确性D.时空复杂度2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3.对线性表,在下列哪种情况下应当采用链表表示?( )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35.AOV网是一种()。

A.有向图B.无向图C.无向无环图D.有向无环图6.采用开放定址法处理散列表的冲突时,其平均查找长度()。

A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同D.高于二分查找7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。

A.值B.函数C.指针D.引用8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。

A.行号B.列号C.元素值D.非零元素个数9.快速排序在最坏情况下的时间复杂度为()。

A.O(log2n) B.O(nlog2n)C.0(n) D.0(n2)10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( )。

A. O(n)B. O(1)C. O(log2n)D. O(n2)二、运算题(每题 6 分,共24分)1.数据结构是指数据及其相互之间的______________。

当结点之间存在M对N (M:N)的联系时,称这种结构为_____________________。

数据结构习题参考答案

数据结构习题参考答案

数据结构习题参考答案第一章答案一、填空题1.数据元素,数据项2. O(1),O(n),O(log 2n),O(n 2)3.线性结构,非线性结构,顺序结构,链式结构4.无,一,无,一5.前驱,一,无,任意6.任意7. O(n 1/2)8.O(1)<o(2n<="") 第二章答案一、填空题1. n/2,(n-1)/2分析:当在顺序线性表中的第i (1<=i<=n+1)个位置之前插入一个新元素时,从第i 个元素起向后的n+1-i 个元素均要向后移动一个位置。

因此在等概率情况下,插入操作中元素的平均移动次数为∑+==-++=112)1(11)(n i ni n n n f ;当在顺序线性表中删除第i (1<=i<=n )个位置上的元素,从第i+1个元素起向后的n-i 个元素均要向前移动一个位置。

因此在等概率情况下,删除操作中元素的平均移动次数为∑=-=-= n i n i n n n f 121)(1)(。

2.向后3.向前4.指针域5.一定,不一定6. O(n)7. O(n)8.消除空表的特殊性,统一表示和处理空表和非空表的情形,从而简化插入和删除等操作的某些细节。

9.前驱,后继10.O(n)二、填空题1. (1)2. (1)3. (4)4. (2)5. (2)6. (4)7. (4)8. (1)9. (4)10.(1)11.(2)12.(3)第三章参考答案一、填空题1.线性,任何,栈顶,队尾,队头2.先进后出(FILO ),队尾,队头,先进先出(FIFO )3. top==0,top==m4. 235415.前一个位置,所在位置,m-1分析:在顺序循环队列中约定头指针front 和尾指针rear 所指向的位置,是牺牲掉一个存储单元而方便表示队列空和队列满的条件,因此顺序循环队列中实际可用的存储单元只有m-1个。

6. (rear+1)%m==front ,rear==front7. O(1)8.返回地址,返回地址二、选择题1.(3) 2.(3) 3.(3) 4. (2)5. (2)6. (3)7. (1)8. (4)因为:顺序循环队列中的元素个数=??<+-≥-front rear m front rear front rear front rear ,整理合并可写成(rear-front+m)%m 。

(完整版)数据结构复习题目及答案

(完整版)数据结构复习题目及答案

(完整版)数据结构复习题目及答案数据结构 -C 语言版》第一章绪论单项选择题1.在数据结构中,数据的基本单位是 ________2.数据结构中数据元素之间的逻辑关系被称为__ ___ 。

A. 数据的存储结构B. 数据的基本操作C. 程序的算法3.在数据结构中,与所使用计算机无关的是数据的________ ___。

A. 存储结构B. 逻辑和物理结构C. 逻辑结构4.在链式存储结构中,数据之间的关系是通过 _______ ___ 体现的。

A. 数据在内存的相对位置B. 指示数据元素的指针C. 数据的存储地址D. 指针5.计算算法的时间复杂度是属于一种 ______ ___。

A. 事前统计的方法B. 事前分析估算的方法C. 事后统计的方法D. 事后分析估算的方法6.在对算法的时间复杂度进行估计的时候,下列最佳的时间复杂度是A. n 2B. nlognC. nD. logn 7.设使用某算法对 n 个元素进行处理,所需的时间是T(n)=100nlog 2n+200n+2000,则该算法的渐近时间复杂度为 _____ ___。

A. 数据项B. 数据类型C. 数据元素D. 数据变量D. 数据的逻辑结构D. 物理结构A. O(1)B. O(n)C. O(200n)D. O(nlog2n)CDCBBDD第二章线性表单项选择题1 ?链表不具有的特点是 __________ 。

A.可随机访问任一元素B.插入和删除时不需要移动元素C.不必事先估计存储空间D.所需空间与线性表的长度正比2.设顺序表的每个元素占 8个存储单元。

第1个单元的存储地址是100,则第6个元素占用的最后一个存储单元的地址为 ______________ 。

3 ?在线性链表存储结构下,插入操作算法_______________ B. p_>next = p_>n ext;D. p = p->n ext; p->n ext = p->n ext- >n ext;5 .将长度为n 的单链表接在长度为 m 的单链表之后的算法时间复杂度为 __________________ A. 0( n)B. 0(1)C. 0(m)D. 0(m+n)6 ?需要预分较大空间,插入和删除不需要移动元素的线性表,其存储结构是 ________A.单链表B.静态链表C.线性链表D.顺序存储方式ACCABB 填空题1 ?在带表头结点的单链表中,当删除某一指定结点时,必须找到该结点的 ____ 结点。

数据结构考试试题及答案

数据结构考试试题及答案

数据结构考试试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用什么类型的数据结构来实现?A. 栈B. 队列C. 数组D. 链表答案:C2. 下列选项中,哪一个不是二叉树的性质?A. 任意节点的左子树和右子树的深度可能不同B. 任意节点的左子树和右子树的深度相同C. 任意节点的左子树和右子树的节点数可能不同D. 任意节点的左子树和右子树的节点数相同答案:B3. 哈希表的冲突解决方法不包括以下哪种?A. 开放定址法B. 链地址法C. 线性探测法D. 排序法答案:D4. 以下哪种排序算法的时间复杂度最低?A. 冒泡排序B. 快速排序C. 插入排序D. 归并排序答案:B5. 在图的遍历算法中,深度优先搜索(DFS)使用的栈是:A. 系统栈B. 显式栈C. 隐式栈D. 以上都不是答案:B6. 以下哪种数据结构可以有效地实现稀疏矩阵的存储?A. 顺序存储B. 链表C. 散列D. 邻接矩阵答案:C7. 在二叉搜索树中,插入一个新节点后,树的平衡因子可能为:A. -2B. 0C. 2D. 3答案:A8. 堆数据结构中,父节点的值总是大于其子节点的值,这种堆被称为:A. 最小堆B. 最大堆C. 完全二叉树D. 满二叉树答案:B9. 以下哪个算法不是动态查找表的算法?A. 直接查找B. 二分查找C. 斐波那契查找D. 哈希查找答案:A10. 在图的遍历算法中,广度优先搜索(BFS)使用的栈是:A. 系统栈B. 显式栈C. 隐式栈D. 以上都不是答案:C二、填空题(每题2分,共20分)1. 在数据结构中,栈是一种______结构,遵循后进先出(LIFO)的原则。

答案:线性2. 一个具有n个顶点的无向图的边数最多为______。

答案:n*(n-1)/23. 快速排序算法的时间复杂度在最坏情况下为______。

答案:O(n^2)4. 在哈希表中,如果一个关键字的哈希地址已经被占用,则需要进行______。

(完整版)数据结构试题及答案

(完整版)数据结构试题及答案

(完整版)数据结构试题及答案《数据结构》自考复习思考试题○10一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1. 若将数据结构形式定义为二元组(K,R),其中K是数据元素的有限集合,则R是K上( ) A. 操作的有限集合 B. 映象的有限集合C. 类型的有限集合D. 关系的有限集合2. 在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( )A. n-i+1B. iC. i+1D. n-i3. 若不带头结点的单链表的头指针为head,则该链表为空的判定条件是( )A. head==NULLB. head->next==NULLC. head!=NULLD. head->next==head4. 引起循环队列队头位置发生变化的操作是( )A. 出队B. 入队C. 取队头元素D. 取队尾元素5. 若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则不.可能出现的出栈序列是( )A. 2,4,3,1,5,6B. 3,2,4,1,6,5C. 4,3,2,1,5,6D. 2,3,5,1,6,46. 字符串通常采用的两种存储方式是( )A. 散列存储和索引存储B. 索引存储和链式存储C. 顺序存储和链式存储D. 散列存储和顺序存储7. 设主串长为n,模式串长为m(m≤n),则在匹配失败情况下,朴素匹配算法进行的无效位移次数为( )A. mB. n-mC. n-m+1D. n8. 二维数组A[12][18]采用列优先的存储方法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[9][7]的地址为( )A. 429B. 432.C. 435D. 4389. 对广义表L=((a,b),(c,d),(e,f))执行操作tail(tail(L))的结果是( )A. (e,f)B. ((e,f))C. (f)D. ( )10. 下列图示的顺序存储结构表示的二叉树是( )11. n个顶点的强连通图中至少含有( )A. n-1条有向边B. n条有向边C. n(n-1)/2条有向边D. n(n-1)条有向边12. 对关键字序列(56,23,78,92,88,67,19,34)进行增量为3的一趟希尔排序的结果为( )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)13. 若在9阶B-树中插入关键字引起结点分裂,则该结点在插入前含有的关键字个数为( ) A. 4 B. 5C. 8D. 914. 由同一关键字集合构造的各棵二叉排序树( )A. 其形态不一定相同,但平均查找长度相同B. 其形态不一定相同,平均查找长度也不一定相同C. 其形态均相同,但平均查找长度不一定相同.D. 其形态均相同,平均查找长度也都相同15. ISAM文件和VSAM文件的区别之一是( )A. 前者是索引顺序文件,后者是索引非顺序文件B. 前者只能进行顺序存取,后者只能进行随机存取C. 前者建立静态索引结构,后者建立动态索引结构D. 前者的存储介质是磁盘,后者的存储介质不是磁盘二、填空题(本大题共10小题,每空2分,共20分)16. 数据的逻辑结构在计算机存储器内的表示,称为数据的____________。

广东工业大学考试试卷000复习样题答案数据结构.doc

广东工业大学考试试卷000复习样题答案数据结构.doc

数据结构复习样题答案一.单项选择题《共12分〉I. B 2. A 3. A 4. D 5. C 6. D 7. B 8. C二.填空题(共12分)9.数据对象、数据关系、基本操作10.从表中任一结点出发均可找到表中其他结点II.字符依次对应相同且长度相同12.3313.各结点均无左孩子14.n-115.在排序过程中需要访问外存16.散列三.解答题(共36分〉成功的平均査找长度=42/1218. (10分)已知一个长度为12的表为(Jan, Feb, Mar, Apr, May, June,July, Aug, Sep, Oct, Nov, Dec)(1)试将表中元素依次插入到一棵初始为空的二叉排序树(字符串之间按字典顺序比较大小)。

画出该二叉排序树,并求出等概率情况下查找成功的平均查找长度。

(2)设哈希表长度为13,哈希函数H (k) =Li/2」,其中i为关键字k中第一个字母在字母表中的序号(例如A和D的序号分别为1和4),用链地址法解决冲突。

请画出通过依次插入表中元素所构造的散列表,并求出在等概率情况下查找成功的平均查找长度。

0 1 23456789 10 11 1219.(5分)假设电文中仅由a到h共8个字母组成,字母在电文中出现的频度依次为7,19, 2, 6, 32, 3, 21, 10请画出由此构造的哈夫曼树(要求树中所有结点的左右孩子必须是左大右小),并写出这8 个字母相应的哈夫曼编码。

20.(8分)若对序列(25, 19, 7, 41, 29, 12, 23, 26)按升序排序,请分别给出(1)步长为4的一趟希尔排序的结果;(2)初始大根堆。

答:(1) (12, 7, 25, 29, 19, 23, 26, 41)(2) (41, 26, 23, 25, 29, 12, 7, 19)字符哈夫曼码a111b010c01111d0110e00f OHIO810h110算法题(共30分〉22. (5分)函数f22定义如下,其中函数调用Insert (L, i, k)在顺序表L的第i位置插入k ovoid f22(SqList &L, int i) { if(i > 0) {f22(L, i-1);for (int k=l; k<=i; k++)Insert(L, i, k);}}设有空顺序表L =(),请写出调用递归函数f22(L,3)后(1)L的长度:6(2)L = ( 1, 2, 3, 2, 1, 1 )23. (5分)算法f23(L)将带头结点的单链表L逆置。

数据结构考试题库与参考答案

数据结构考试题库与参考答案

数据结构考试题库与参考答案一、选择题1.1 单选题题目: 下列哪种数据结构是线性结构?A. 树B. 图C. 栈D. 队列参考答案: C解析: 栈和队列都是线性结构,而树和图是非线性结构。

1.2 多选题题目: 下列哪些操作的时间复杂度是 O(1)?A. 在数组中插入一个元素B. 在链表中删除一个元素C. 访问链表中的一个元素D. 在树中删除一个节点参考答案: B, C解析: 在链表中删除和访问元素的时间复杂度是 O(1),因为这两个操作只需要遍历链表一次。

在数组中插入或删除元素的时间复杂度是 O(n),因为在数组中移动元素需要遍历整个数组。

在树中删除一个节点的时间复杂度取决于树的形状,最坏情况下是 O(n)。

二、填空题题目: 栈是一种后进先出(LIFO)的数据结构,它是一种特殊的线性表,它的特点是只能在表的_____进行插入和删除操作。

参考答案: 尾部解析: 栈是一种只能在表的一端进行插入和删除操作的线性表,这一端被称为栈顶。

三、判断题题目: 链表比数组更适合进行频繁的插入和删除操作。

参考答案: 正确解析: 链表的每个节点只存储数据和一个指向下一个节点的指针,因此在链表中插入或删除元素只需要改变节点的指针,不需要移动其他元素,时间复杂度是 O(1)。

而数组需要移动其他元素,时间复杂度是 O(n)。

四、简答题题目: 请简要介绍队列的特点和应用场景。

参考答案: 队列是一种先进先出(FIFO)的数据结构,它的特点是插入操作在队列的一端进行,删除操作在队列的另一端进行。

队列的应用场景包括: 1) 实现打印队列; 2) 实现消息队列; 3) 实现缓冲区。

解析: 队列的特点和应用场景是数据结构中的基本概念,需要掌握。

五、编程题题目: 实现一个栈类,包括 push 和 pop 操作。

参考答案:class Stack:def __init__(self):self.items = []def push(self, item):self.items.append(item)def pop(self):if not self.is_empty():return self.items.pop()else:raise IndexError("pop from empty stack")def is_empty(self):return len(self.items) == 0解析: 栈是一种只能在表的一端进行插入和删除操作的线性表,这一端被称为栈顶。

《数据结构》复习题及参考答案

《数据结构》复习题及参考答案

《数据结构》复习题及参考答案数据结构复习题及参考答案1. 什么是数据结构?数据结构是一种组织和存储数据的方式,它涉及到数据的组织方式、存储方式、访问方式以及对数据进行操作的算法等。

数据结构的选择对于解决不同类型的问题非常重要。

2. 数据结构有哪些常见的分类?数据结构可以分为以下几类:(1) 线性结构:线性结构是一种有序排列的数据结构,其中数据元素之间存在着一对一的关系。

常见的线性结构有数组、链表、栈和队列等。

(2) 非线性结构:非线性结构是一种数据元素之间存在多对多关系的结构,常见的非线性结构有树和图等。

(3) 逻辑结构:逻辑结构是指数据元素之间的逻辑关系,主要包括集合结构、线性结构、树形结构和图形结构等。

(4) 物理结构:物理结构是指数据的逻辑结构在计算机存储中的表示方式,主要包括顺序存储结构和链式存储结构等。

3. 什么是算法?算法是解决特定问题的一系列步骤或操作的有限序列。

一个算法通常包括输入、输出、基本操作、控制结构和定义算法执行的约定等。

4. 数据结构和算法之间的关系是什么?数据结构是算法的基础,而算法又依赖于数据结构。

只有选择合适的数据结构,才能实现高效的算法。

同时,算法的设计也会对数据结构的选择产生影响。

5. 请解释什么是时间复杂度和空间复杂度?时间复杂度是衡量算法执行时间消耗的度量,表示算法的运行时间与问题规模之间的关系。

通常用大O符号来表示时间复杂度,如O(n)、O(nlogn)等。

空间复杂度是衡量算法执行所需存储空间的度量,表示算法所需的额外空间与问题规模之间的关系。

同样也使用大O符号来表示,如O(1)、O(n)等。

6. 请简要描述以下数据结构的特点及应用场景:(1) 数组:数组是一种连续存储数据元素的线性结构,具有随机访问性能。

适用于知道元素位置的查找和修改操作。

(2) 链表:链表是一种通过指针连接的数据结构,具有插入、删除元素方便的特点。

适用于频繁插入、删除操作以及不知道具体位置的查找操作。

数据结构样题及答案

数据结构样题及答案

一.填空题(每题2 分,共20 分);1. 数据结构算法中,通常用时间复杂度和___空间复杂度_两种方法衡量其效率。

2. 下面程序段的时间复杂度为___ O(n2)___。

(n>1)for(i = 1; i <= n; i++)for(j = 1; j <= i; j++)x = x + 1;3. 在一个长度为 n 的顺序表中第i 个元素(1<=i<=n)之前插入一个元素时,需向后移动____ n-i+1___个元素。

4. 在 n 个结点的单链表中要删除已知结点*p,需找到它的__前驱_。

5. 在具有 n 个元素空间的循环队列中,队满时共有_____n-1____个元素。

6. 两个串相等的充分必要条件是___串长相等且对应字符相等_____。

7. 具有 256 个结点的完全二叉树的深度为_9__。

8. G 是一个非连通无向图,共有36 条边,则该图至少有___9___个顶点。

边数=N(N-1)/29. 在顺序表(8,11,15,19,21,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为___4____。

10. 直接插入排序用监视哨的作用是_始终存放待插入的记录,免去查找过程中每一步都要检测整个表是否查找完毕_______。

二.单项选择题1. 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用(A)存储方式最节省时间。

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表12 3A.循环链表 B.单链表 C.双向循环链表 D.双向链表3. 有六个元素 6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?(B)A. 5 4 3 6 1 2B. 3 4 6 5 2 1C. 4 5 3 1 2 6D. 2 3 4 1 5 64. 若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i 个栈( i =1,2)栈顶,栈1 的底在v[1],栈2 的底在V[m],则栈满的条件是(B)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构复习样题答案
一. 单项选择题(共12分)
1. B
2. A
3. A
4. D
5. C
6. D
7. B
8. C
二. 填空题(共12分)
9. 数据对象、数据关系、基本操作
10. 从表中任一结点出发均可找到表中其他结点 11. 字符依次对应相同且长度相同 12. 33
13. 各结点均无左孩子 14. n
15. 在排序过程中需要访问外存 16. 散列
三. 解答题(共38分)
17.(5分)后序线索
18.(10分)已知一个长度为12的表为
(Jan ,Feb ,Mar ,Apr ,May ,June ,July ,Aug ,Sep ,Oct ,Nov ,Dec ) (1) 试将表中元素依次插入到一棵初始为空的二叉排序树(字符串之间按字典顺序比较大
小)。

画出该二叉排序树,并求出等概率情况下查找成功的平均查找长度。

(2) 设哈希表长度为13,哈希函数H (k )= ⎣i/2⎦,其中i 为关键字k 中第一个字母在字母
表中的序号(例如A 和D 的序号分别为1和4),用链地址法解决冲突。

请画出通过依次插入表中元素所构造的散列表,并求出在等概率情况下查找成功的平均查找长度。

Jan
Feb
Mar
Apr
June May
July Aug
Sep
Oct Nov
Dec
成功的平均查找长度=42/12
19.(6分)假设电文中仅由a 到h 共8个字母组成,字母在电文中出现的频度依次为
7,19,2,6,32,3,21,10
请画出由此构造的哈夫曼树(要求树中所有结点的左右孩子必须是左大右小),并写出这8个字母相应的哈夫曼编码。

20.(8分)若对序列(25,19,7,41,29,12,23,26)按升序排序,请分别给出 (1) 步长为4的一趟希尔排序的结果; (2) 初始大根堆。

答:(1) (25,12,7,26,29,19,23,41) (2) (41,29,23,26,25,12,7,19)
21.(9分)对于右边的带权图G ,请 (1) 画出G 的邻接矩阵; (2) 画出G 的最小生成树。

答:(1) (
2)

⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣
⎡∞∞∞∞07
2
3
7709829063804764
四. 算法题(共38分)
22.(6分)函数f22定义如下,其中函数调用Insert(L, i, k)在顺序表L的第i位置插入k。

void f22(SqList &L, int i) {
if (i > 0) {
f22(L, i-1);
for (int k=1; k<=i; k++)
Insert(L, i, k);
}
}
设有空顺序表L =(),请写出调用递归函数f22(L,3)后
(1)L的长度:6
(2)L =(1,2,3,2,1,1 )
23.(6分)算法f23(L)将带头结点的单链表L逆置。

请在画线处填空。

void f23(LinkList &L) {
LinkList p = L->next;
L->next = NULL ;
while ( p ) {
LinkList s = p->next ;
p->next = L->next;
L->next = p ;
p = s;
}
}
24.(6分)s是一个升序静态查找表,请简要说明函数调用f24(s, 1, s.length, k)
的意义。

int f24(SSTable s, int low, int high, KeyType k) {
if (low>high) return 0;
int mid=(low+high)/2;
if (k==s.elem[mid].key) return mid;
if (k>s.elem[mid].key) return f24(s,mid+1,high,k);
else return f24(s,low,mid-1,k);
}
答:在s中递归折半查找k。

25.(6分)请对以下函数填空,实现求二叉树T中各结点的子孙总数,并填入结点的DescNum域中的算法。

int f25(BiTree T) {
if ( !T ) return -1;
else {
T->DescNum = f25(T->lchild) +
f25(T->rchild) +
2 ;
return T->DescNum;
}
}
26.(6分)图的邻接矩阵表示和算法f26描述如下:
#define MaxNum 5
typedef struct {
char vexs[MaxNum];
int arcs[MaxNum][MaxNum];
int n,e;
} MGraph;
int f26(MGraph G, int i) {
int d=0;
for (int j=0; j<G.n; j++) {
if (G.arcs[i][j]) d++;
if (G.arcs[j][i]) d++;
}
return d;
}
已知一个图G的邻接矩阵如右所示,
(1)给出执行算法调用f26(G,4)的返回值;答:5;
(2)简述该算法返回值的意义。

答:求图G第i顶点的度。

27.(8分)请设计实现删除单链表中值相同的多余结点的算法,先简述算法思想,然后写出算法的C语言描述。

void purge(LList L) {
// 删除链表中的“冗余”元素
LList s, q, p = L->next;
while ( p ) { // p 指向当前被考察的结点
q = p;
while (q->next) // 考察 q 所指后继结点
if (q->next->data != p->data)
q = q->next;
else // 修改指针并释放结点空间
{ s=q->next; q->next=s->next; free(s); }
p = p->next;
}// while p
}//purge。

相关文档
最新文档