数据结构练习(答案)
数据结构练习答案
第8章图一、单项选择题1.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的入度数之和为(A)。
A.s B.s-1 C.s+1 D.n2.在一个具有n个顶点的无向图中,若具有e条边,则所有顶点的度数之和为(D )。
A.n B.e C.n+e D.2e3.在一个具有n个顶点的无向完全图中,所含的边数为(C )。
A.n B.n(n-1) C.n(n-1)/2 D.n(n+1)/2 4.在一个具有n个顶点的有向完全图中,所含的边数为(B )。
A.n B.n(n-1) C.n(n-1)/2 D.n(n+1)/25.在一个无向图中,若两顶点之间的路径长度为k,则该路径上的顶点数为(B )。
A.k B.k+1 C.k+2 D.2k6.对于一个具有n个顶点的无向连通图,它包含的连通分量的个数为(B )。
A.0 B.1 C.n D.n+17.若一个图中包含有k个连通分量,若要按照深度优先搜索的方法访问所有顶点,则必须调用(A )次深度优先搜索遍历的算法。
A.k B.1 C.k-1 D.k+18.若要把n个顶点连接为一个连通图,则至少需要( C )条边。
A.n B.n+1 C.n-1 D.2n9.在一个具有n个顶点和e条边的无向图的邻接矩阵中,表示边存在的元素(又称为有效元素)的个数为(D )。
A.n B.n⨯e C.e D.2⨯e 10.在一个具有n个顶点和e条边的有向图的邻接矩阵中,表示边存在的元素个数为(C )。
A.n B.n⨯e C.e D.2⨯e 11.在一个具有n个顶点和e条边的无向图的邻接表中,边结点的个数为(D )。
A.n B.n⨯e C.e D.2⨯e 12.在一个具有n个顶点和e条边的有向图的邻接表中,保存顶点单链表的表头指针向量的大小至少为(A )。
A.n B.2n C.e D.2e13.在一个无权图的邻接表表示中,每个边结点至少包含(B )域。
A.1 B.2 C.3 D.414.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应邻接表中该顶点单链表中的边结点数为(B )。
数据结构试题集(包含答案-完整版)
数据结构试题集(包含答案-完整版)数据结构试题集(包含答案-完整版)1. 单选题1) 数据结构是一种()。
a) 存储结构b) 算法c) 数据模型d) 网络答案:c) 数据模型解析:数据结构是一种用于组织和存储数据的方式,描述了数据之间的关系以及对数据的操作。
2) 以下哪种数据结构可以通过索引直接访问元素?a) 链表b) 队列c) 栈d) 数组答案:d) 数组解析:数组是一种线性数据结构,可以通过索引直接访问指定位置的元素。
2. 多选题1) 哪些数据结构属于非线性结构?()a) 队列b) 树c) 栈d) 图答案:b) 树d) 图解析:线性结构中的元素存在一对一的关系,非线性结构中的元素存在一对多或多对多的关系,树和图属于非线性结构。
2) 下列哪些操作可以在栈上进行?()a) 入栈b) 出栈c) 查找d) 删除答案:a) 入栈b) 出栈解析:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
3. 简答题1) 请简要介绍线性表和非线性表。
答案:线性表是数据元素的一个有限序列,元素之间存在一对一的关系。
非线性表是指元素之间存在一对多或多对多的关系,如树和图。
2) 请解释什么是时间复杂度和空间复杂度。
答案:时间复杂度是衡量算法执行效率的度量,表示算法的运行时间随输入规模增长的速度。
空间复杂度是指算法执行过程中所需的存储空间随输入规模增长的速度。
4. 编程题题目:实现一个栈,包含push、pop和getMin三个操作,要求时间复杂度为O(1)。
答案:class MinStack:def __init__(self):self.stack = []self.min_stack = []def push(self, x):self.stack.append(x)if not self.min_stack or x <= self.min_stack[-1]:self.min_stack.append(x)def pop(self):if self.stack.pop() == self.min_stack[-1]:self.min_stack.pop()def getMin(self):return self.min_stack[-1]解析:在栈的基础上,使用一个辅助栈min_stack来记录当前栈中的最小值。
数据结构练习题(含答案)(DOC)
数据结构练习题习题1 绪论单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。
①A.操作对象B.计算方法C.逻辑结构D.数据映象②A.存储结构B.关系C.运算D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。
①A.算法B.数据元素C.数据操作D.数据对象②A.操作B.映象C.存储D.关系3. 在数据结构中,从逻辑上可以把数据结构分成。
)A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4. 算法分析的目的是①,算法分析的两个主要方面是②。
① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B. 正确性和简明性C. 可读性和文档性D. 数据复杂性和程序复杂性5. 计算机算法指的是①,它必具备输入、输出和②等五个特性。
① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列D. 调度方法!② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性D. 易读性、稳定性和安全性填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括、和三种类型,树形结构和图形结构合称为。
2. 在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
3. 在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。
4. 在图形结构中,每个结点的前驱结点数和后续结点数可以。
5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
数据结构习题答案.doc
数据结构习题答案.doc单元练习1一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)(√)(1)数据的逻辑结构与数据元素本身的内容和形式无关。
(√)(2)一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。
(ㄨ)(3)数据元素是数据的最小单位。
(ㄨ)(4)数据的逻辑结构和数据的存储结构是相同的。
(ㄨ)(5)程序和算法原则上没有区别,所以在讨论数据结构时可以通用。
(√)(6)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。
(√)(7)数据的存储结构是数据的逻辑结构的存储映像。
(√)(8)数据的物理结构是指数据在计算机内实际的存储形式。
(ㄨ)(9)数据的逻辑结构是依赖于计算机的。
(√)(10)算法是对解题方法和步骤的描述。
二.填空题(1)数据有逻辑结构和存储结构两种结构。
(2)数据逻辑结构除了集合以外,还包括:线性结构、树形结构和图形结构。
(3)数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。
(4)树形结构和图形结构合称为非线性结构。
(5)在树形结构中,除了树根结点以外,其余每个结点只有 1 个前趋结点。
(6)在图形结构中,每个结点的前趋结点数和后续结点数可以任意多个。
(7)数据的存储结构又叫物理结构。
(8)数据的存储结构形式包括:顺序存储、链式存储、索引存储和散列存储。
(9)线性结构中的元素之间存在一对一的关系。
(10)树形结构结构中的元素之间存在一对多的关系,(11)图形结构的元素之间存在多对多的关系。
(12)数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)三个方面的内容。
(13)数据结构被定义为(D,R),其中D是数据的有限集合,R是D 上的关系的有限集合。
(14)算法是一个有穷指令的集合。
(15)算法效率的度量可以分为事先估算法和事后统计法。
(16)一个算法的时间复杂性是算法输入规模的函数。
(17)算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模n的函数。
数据结构(含答案)
数据结构综合练习一、选择题1.数据的存储结构包括顺序、链接、散列和()4种基本类型。
A索引B数组C集合D向量2.下面程序的时间复杂性的量级为()。
int i=0,s1=0,s2=0;while(i++<n){if (i%2)s1+=i;…else s2+=i;}(1) (1bn) (n)(2n)3.下面程序段的时间复杂度为()。
for(int i=0;i<m;i++)for(int j=0;j<n;j++)a[i][j]=i*j;(m2) (n2) (m+n) (m*n)4.在一个长度为n的顺序存储结构的线性表中,向第i个元素(1≤i≤n+1)位置插入一个元素时,需要从后向前依次后移()个元素。
+l<5.在一个长度为n的顺序存储结构的线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次后移()个元素。
+l6.在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为()。
A.(n+1)/2 2 +17.在一个顺序表中的任何位置插入一个元素的时间复杂度为()。
A. O(n)B. O(n/2)C. O(1)D. O(n2)8. 线性表的链式存储比顺序存储更有利于进行()操作。
A.查找B.表尾插入和删除C.按值插入和删除D.表头的插入和删除…9. 线性表的顺序存储比链式存储更有利于进行()操作。
A.查找B.表尾插入和删除C.按值插入和删除D.表头的插入和删除10. 在一个表头指针为ph的单链表中,若要向表头插入一个由指针p指向的结点,则应执行()操作。
A. ph=p; p->next=ph;B. p->next=ph; ph=p;C. p->next=ph; p=ph;D. p->next=ph->next; ph->next=p;11. 在一个表头指针为ph的单链表中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()操作。
数据结构试题及答案
数据结构试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性结构的特点是元素之间存在一对一的线性关系。
以下哪个数据结构不属于线性结构?A. 栈B. 队列C. 树D. 链表答案:C2. 栈(Stack)是一种后进先出(LIFO)的数据结构,以下哪个操作不是栈的基本操作?A. PushB. PopC. TopD. Sort答案:D3. 在二叉树的遍历中,前序遍历的顺序是:A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A4. 哈希表的冲突可以通过多种方法解决,以下哪个不是解决哈希表冲突的方法?A. 链地址法B. 开放地址法C. 再散列法D. 排序法答案:D5. 以下哪个排序算法是稳定的?A. 快速排序B. 堆排序C. 归并排序D. 选择排序答案:C6. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构来实现?A. 队列B. 栈C. 链表D. 哈希表答案:B7. 以下哪个是图的存储方式?A. 顺序存储B. 链式存储C. 散列表D. 矩阵存储答案:D8. 动态数组(如C++中的vector)在插入元素时可能需要进行的操作是:A. 原地扩展B. 复制元素C. 重新分配内存D. 释放内存答案:C9. 以下哪个不是算法的时间复杂度?A. O(1)B. O(log n)C. O(n^2)D. O(n!)答案:D10. 在查找算法中,二分查找法要求被查找的数据必须是:A. 无序的B. 有序的C. 随机分布的D. 唯一元素答案:B二、简答题(每题5分,共30分)1. 简述链表和数组的区别。
答案:链表和数组都是存储数据的线性数据结构,但它们在内存分配、访问方式、插入和删除操作等方面存在差异。
数组在内存中是连续存储的,可以通过索引快速访问任意元素,但插入和删除元素时可能需要移动大量元素。
链表在内存中是非连续存储的,每个元素包含数据和指向下一个元素的指针,不支持通过索引快速访问,但插入和删除操作只需要改变指针,不需要移动其他元素。
数据结构练习附答案
一、单项选择题1.逻辑关系是指数据元素间的()A.类型B.存储方式C.结构D.数据项2.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )A.顺序表 B.用头指针表示的单循环链表C. 用尾指针表示的单循环链表D. 单链表3.设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为()A.front=front+1 B.front=(front+1)%(m-1)C.front=(front-1)%m D.front=(front+1)%m4.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为( )。
A.rear%n==front B.(front+l)%n==rearC.rear%n-1==front D.(rear+l)%n==front5.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队空的条件为( )。
A.rear%n==front B.front+l=rearC.rear==front D.(rear+l)%n=front6.已知一颗二叉树上有92个叶子结点,则它有____个度为2的结点。
( )A. 90B. 91C. 92D. 937.在一棵非空二叉树的中序遍历序列中,根结点的右边_____。
A. 只有右子树上的所有结点B. 只有右子树上的部分结点C. 只有左子树上的所有结点D. 只有左子树上的部分结点8.有n条边的无向图的邻接表存储法中,链表中结点的个数是( )个。
A. nB. 2nC. n/2D. n*n9.判断有向图是否存在回路,除了可利用拓扑排序方法外,还可以利用()。
A. 求关键路径的方法B.求最短路径的方法C. 深度优先遍历算法D.广度优先遍历算法10.对线性表进行二分查找时,要求线性表必须( )。
数据结构练习题及答案
数据结构练习题(一)一、单选题1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进行插入运算时( )。
A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据结构中( )是非线性结构。
A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在()位置。
脚注(10)表示用10进制表示。
A.688 B.678 C.692 D.6965.树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( )。
A.2k-1 +1 D. 2k-17.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )。
A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有()个。
A.1 B.2 C.3 D.49.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
二、填空题1.通常从四个方面评价算法的质量:_________、_________、_________和_________。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数为__________个,树的深度为___________,树的度为_________。
数据结构试题库及答案
数据结构试题库及答案一、选择题(每题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(B(E,F),C(G(H,I,J,K),L),D(M(N))),则该树的度为(1)4,树的深度为(2)4 ,树中叶子结点的个数为(3)8。
2.一棵满二叉树中有m个叶子,n个结点,深度为h,请写出m、n、h之间关系的表达式(4)n=2h-1,m=n+1-2h-1 n=2m-1 。
3.一棵二叉树中如果有n个叶子结点,则这棵树上最少有(5)2n-1 个结点。
一棵深度为k的完全二叉树中最少有2k-1(6)个结点,最多有(7)2k-1个结点。
4.具有n个结点的二叉树,当它是一棵(8)完全二叉树时具有最小高度(9) log2n」+1,当它为一棵单支树时具有高度(10) n 。
5.对具有n个结点的完全二叉树按照层次从上到下,每一层从左到右的次序对所有结点进行编号,编号为i的结点的双亲结点的编号为_(11)__[i/2]__,左孩子的编号为___2i____,右孩子的编号为__2i+1______。
6.若具有n个结点的二叉树采用二叉链表存储结构,则该链表中有__2n_个指针域,其中有_n-1_个指针域用于链接孩子结点,__n+1_个指针域空闲存放着NULL 。
7.二叉树的遍历方式通常有__先序__、___中序__、__后序__和___层序___四种。
8.已知二叉树的前序遍历序列为ABDCEFG,中序遍历序列为DBCAFEG,其后序遍历序列为___DCBFGEA__。
9.已知某完全二叉树采用顺序存储结构,结点的存放次序为A,B,C,D,E,F,G,H,I,J,该完全二叉树的后序序列为___HIDJEBFGCA____。
10.若具有n个结点的非空二叉树有n0个叶结点,则该二叉树有__n0-1_个度为2的结点,____n-2n0+1____个度为1的结点。
11.任何非空树中有且仅有一个结点没有前驱结点,该结点就是树的__根____。
度为k的树中第i层最多有___k i-1_______个结点(i>=1),深度为h的k叉树最多有___k0+k1+....+k h-1____个结点。
(完整版)数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题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. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
数据结构练习题及参考答案
《数据结构》练习题一、解答题(共50分)1、(8分)假设用于通讯的电文字符集及其出现的频率如下表所示。
请为这8个字符设计哈夫曼编码,并画出其哈夫曼树,计算WPL 。
2. (8分)若一棵二叉树中序遍历和后序遍历序列分别为:DBEHGAFIC 和DHGEBIFCA 。
试画出这棵二叉树,并写出其先序遍历和层序遍历序列。
3.(16分)以下无向网络以邻接表为存储结构(假设邻接表的顶点表按字母a 、b 、c 、d 、e 、f 、g 、h 的顺序依次存储,邻接表的边表结点按顶点的下标由小到大链接)。
请画出其邻接表,并写出从顶点f 出发,分别进行深度和广度优先遍历的序列,写出用Prime 方法从顶点c开始产生最小生成树的边的序列。
4.(8分)已知键值序列为(44,39,67,25, 52,59,43,84,54,58,15,26,12,73,92,69),取填充因子α=0.8,采用线性探查法处理冲突,试构造散列表。
⒌(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81),用希尔排序方法进行排序,d1=5,d2=3,d3=1,则第二趟的排序结果是( )。
⒍(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81) ,用堆(大根堆)排序方法进行排序,第一趟的排序结果是( )。
二、完善程序(共20分,每空2分)1.假设一组递减有序的原始数据存储在数组r 中,存放元素的下标下限为low,下标上字符 出现频率 a 0.05 b 0.03 c 0.24 d 0.16 e 0.08 f 0.24 g 0.18 h0.02限为high,以下是在数组中查找数值为k的折半查找算法。
请填空完善程序。
int BinSearch(int r[ ], int low,int high,int k){ int l,h,m;l= low; h= high;while ( ⑴){m= ⑵;if (k < r[m]) ⑶;else if (k > r[m]) ⑷;else return m;}return 0;}2. 以下程序功能是将数组r中,从下标first到end之间的元素进行快速排序的分区。
数据结构习题有答案
for (int j=1; j<=i; j++) p*=j;
s+=p;
}
return s;
}
解:
(1) , T(n)=O(n)
(2) , T(n)=O(n2)
1。4 算法设计
有3枚硬币,其中有1枚是假的,伪币与真币重量略有不同。如何借用一架天平,找出伪币?以流程图表示算法.
上机练习题
(1) 集合
(2) 线性表
(3) 树 (4) 图
1.2 设n为正整数,求下列各程序段中的下划线语句的执行次数.
(1) i=1; k=0
while(i〈=n-1)
{
k+=10*i;
i++;
}
(2) for (int i=1; i<=n; i++)
for (int j=1; j〈=n; j++)
{ c[i][j]=0;
}
2. 分析顺序表中元素定位算法 int SqList〈T>::Locate ( T e ) 的时间复杂度。
解:设表长为n,等概率下,每个元素被定位的概率为:p=1/n
定位成功第i个元素,需比较i次
3.对于有头结点的单链表,分别写出定位成功时,实现下列定位语句序列。
(1) 定位到第i个结点ai;
p=head; j=0;
要求:给出问题分析、算法描述、源程序及运行截图,在线提交。
1.设a, b, c为3个整数,求其中位于中间值的整数。
1。 设计算法:在顺序表中删除值为e的元素,删除成功,返回1;否则,返回0。
int Sqlist〈T>::DeleteElem( T e )
{ for (i=1; i<=length; i++) //按值顺序查找* i可从0开始
数据结构习题(有答案)
{ for ( j=i; j<length; j++) // ai至an依次前移
Elem[j-1] = elem[j];
length - - ; //表长减一
return 1 ; //删除成功,返回1
}
return 0 ; //未找到,删除不成功,返回0
要求:给出问题分析、算法描述、源程序及运行截图,在线提交。
1.设a, b, c为3个整数,求其中位于中间值的整数。
1.设计算法:在顺序表中删除值为e的元素,删除成功,返回1;否则,返回0。
int Sqlist<T>::DeleteElem( T e )
{ for (i=1; i<=length; i++) //按值顺序查找* i可从0开始
(2)借助栈T,将栈S中所有值为e的数据元素删除之。
3.编写一个算法,将一个非负的十进制整数N转换为B进制数,并输出转换后的结果。当N=248D,B分别为8和16时,转换后的结果为多少?
#include“stack.h”
int NumTrans( int N, int B) {//十进制整数N转换为B进制数
if ( head==NULL) throw“表空!”; //空表,不能删
else if ( i==1) { //删除第1个元素
p=Head; x=p->data; //保存被删元素值
Head= p->next ;
delete p ;
}
else { //元素定位到第ai-1
p=Head; j=1 ; //定位查找起始位置
{ int p=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. 在哈希表中,如果一个关键字的哈希地址已经被占用,则需要进行______。
数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题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. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
数据结构图练习题(附答案).doc
第七章 图一、选择题1.图中有关路径的定义是( )。
【北方交通大学 2001 一、24 (2分)】A .由顶点和相邻顶点序偶构成的边所形成的序列B .由不同顶点所形成的序列C .由不同边所形成的序列D .上述定义都不是2.设无向图的顶点个数为n ,则该图最多有( )条边。
A .n-1B .n(n-1)/2C . n(n+1)/2D .0E .n 2【清华大学 1998 一、5 (2分)】【西安电子科技大 1998 一、6 (2分)】【北京航空航天大学 1999 一、7 (2分)】3.一个n 个顶点的连通无向图,其边的个数至少为( )。
【浙江大学 1999 四、4 (4分)】A .n-1B .nC .n+1D .nlogn ;4.要连通具有n 个顶点的有向图,至少需要( )条边。
【北京航空航天大学 2000 一、6(2分)】A .n-lB .nC .n+lD .2n5.n 个结点的完全有向图含有边的数目( )。
【中山大学 1998 二、9 (2分)】A .n*n B.n (n +1) C .n /2 D .n*(n -l )6.一个有n 个结点的图,最少有( )个连通分量,最多有( )个连通分量。
A .0B .1C .n-1D .n【北京邮电大学 2000 二、5 (20/8分)】7.在一个无向图中,所有顶点的度数之和等于所有边数( )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( )倍。
【哈尔滨工业大学 2001 二、3 (2分)】A .1/2B .2C .1D .48.用有向无环图描述表达式(A+B)*((A+B )/A ),至少需要顶点的数目为( )。
【中山大学1999一、14】A .5B .6C .8D .99.用DFS 遍历一个无环有向图,并在DFS 算法退栈返回时打印相应的顶点,则输出的顶点序列是( )。
A .逆拓扑有序B .拓扑有序C .无序的 【中科院软件所1998】10.下面结构中最适于表示稀疏无向图的是( ),适于表示稀疏有向图的是( )。
数据结构练习题及答案
数据结构试题及答案第一章一、选择题1、研究数据结构就是研究( D )。
A. 数据的逻辑结构B. 数据的存储结构C. 数据的逻辑结构和存储结构D. 数据的逻辑结构、存储结构及其基本操作2、算法分析的两个主要方面是( A )。
A. 空间复杂度和时间复杂度B. 正确性和简单性C. 可读性和文档性D. 数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。
A. 图B. 树C. 二叉树D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。
A. 可执行性、可移植性和可扩充性B. 可执行性、有穷性和确定性C. 确定性、有穷性和稳定性D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。
for(i=0;i<m;i++)for(j=0;j<n;j++)a[i][j]=i*j; A. O(m 2) B. O(n 2) C. O(m*n) D. O(m+n)6、算法是( D )。
A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog 2n+n 2+8),其时间复杂度表示( C )。
A. O(n) B. O(nlog 2n) C. O(n 2) D. O(log 2n)8、下面程序段的时间复杂度为( C )。
i=1;while(i<=n)i=i*3;A. O(n)B. O(3n)C. O(log 3n)D. O(n 3)9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的( B )和运算等的学科。
A. 结构B. 关系C. 运算D. 算法10、抽象数据类型的三个组成部分分别为( A )。
A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型11、下列程序段的时间复杂度为(B )。
(完整版)数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构练习1.填写下面表格,对以下几种排序方法进行比较:3.位置和队尾元素的位置,则判断队空的和队满的条件分别是f=r 和f=r mod m +1。
求此队列中元素个数的计算公式为:((r+m)-f-1) mod m +1。
入队运算:r:=r mod m+1。
出队运算:f:=f mod m + 1。
4.单链表是非顺序线性的链式存储结构,链栈和链队分别是和的链式存储结构。
5.线性表的顺序存储中,元素之间的逻辑关系是通过元素存储地址次序决定的,在线性表的链接存储中,元素之间的逻辑关系是通过元素存储指针地址访问决定的。
6.深度为5的二叉树至多有结点数为31。
7.数据结构即数据的逻辑结构包括顺性存储结构、链式存储结构、非线性结构三种类型,树型结构和图型结构称为非线性结构。
四种基本存储方法:(1)顺序存储方法(2)链接存储方法(3)索引存储方法(4)散列存储方法二.选择题1. >2. 有一个10阶对称矩阵,采用压缩存储方式,以行序为主序存储,A[0][0]的地址为1,则A[7][4]的地址为( C )A 13B . 18C . 33D . 403. 线性表采用链表存储时其存储地址 D 。
A .必须是连续的B .部分地址必须是连续的C .一定是不连续的D .连续不连续都可以4. 下列叙述中错误的是 C 。
A . 串是一种特殊的线性表,其特殊性体现在数据元素是一个字符B . 栈和队列是两种特殊的线性表,栈的特点是后进先出,队列的特点是先进先出。
C . 线性表的线性存储结构优于链式存储结构D .;E . 二维数组是其数据元素为线性表的线性表5. 一棵二叉树的顺序存储结构如题图4-1所示,若中序遍历该二叉树,则遍历次序为A .6. A. DBEGACFH B. ABDEGCFH 7. C. DGEBHFCA D. ABCDEFGH8. 1 2 3 4 5 6 7 8 9 10 11 12 13149. ?10.设一棵二叉树的顺序存储结构如题图4-2所示,则该二叉树是 C .A .完全二叉树B .满二叉树C .深度为4 的二叉树D .深度为3的二叉树11. — 12. 设T 是Huffman 树,它具有6个树叶,且各树叶的权分别为1,2,3,4,5,6。
那么该树的非叶子结点的权之和为 A 。
A .51B .21C .30D .497.设有一无向图的邻接矩阵如下所示,则该图所有顶点的度之和为 C 。
a b c d e a 0 1 1 1 0b 1 0 1 01 c 1 1 0 0 0 d 1 0 0 0 0 e 0 1 0 0 0 A .8 B .9 C .10 D .11 。
8.已知二叉树的后序遍历序列是fedbgca ,中序遍历序列是dfebagc ,则该二叉树的先序遍历序列是 D 。
A .defbagcB .abcdgefC .dbaefcgD .abdefcg 9.由三个结点构成的二叉树,共有 C 种不同的形态。
A .3 B . 4 C . 5 D . 610.在一个具有n 个顶点的无向图中,要连通全部顶点至少需要 D 条边 A . n B .n+1 C .n/2 D .n-111.对线性表进行折半(二分)查找时,要求线性表必须 B 。
A .以顺序方式存储 B .以顺序方式存储且数据元素有序C .以链表方式存储D .以链表方式存储且数据元素有序 —12.顺序查找一个具有n 个元素的线性表,其时间复杂度为 A ,二分查找一个具有n 个元素的线性表,其时间复杂度为 B 。
A . O(n)B . O(log 2n)C . O(n 2)D .O(nlog 2n)13.从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列中的正确位置上,此方法称为 直接插入排序 ;从未排序序列中挑选元素,并将其放入已排序序列中的一端,此方法称为 直接选择排序 ;依次将每两个相临的有序表合并成一个有序表的排序方法称为 归并排序 ;当两个元素比较出现反序时就相互交换位置的排序方法称为 交换排序 ;A .归并排序B . 选择排序C .交换排序D .插入排序 三.简述下面的几个概念:单链表,栈、队列,排序二叉树。
四.简述空串和空格串的区别。
五.一棵度为2的树与二叉树有何区别 六.试分别画出具有3个结点的树和具有3个结点的二叉树的所有不同形态。
七.已知一二叉树如题图4-3所示,1. 用二叉链表和顺序存储方式分别存储此二叉树。
画出图4-3相应的存储结构图。
2. 《 3. 写出此二叉树的中序、先序、后序遍历序列。
八.已知一无向图如题图4-4所示,请给出该图的 1. 每个顶点的度。
2. \3. 邻接矩阵 4. 邻接表 5. 按上述的邻接表写出广度和深度遍历序列。
九.已知一组数据元素为(46,75,18,54,15,27,42,39,88,67)1. 利用直接插入排序方法,写出每次插入后的结果。
2. 利用快速排序方法,写出每趟排序后的结果。
3. 利用2-路归并排序方法,写出每趟归并后的结果。
4. 利用冒泡排序方法,写出每趟排序后的结果。
十.假定一个表为(32,75,63,48,94,25,36,18,70),散列空间为[0..10],1. 若采用除留余数法构造表,哈希函数为H (K )=K MOD 11,用线性探测法解决冲突,试画出哈希表,并求在等概率情况下的平均查找长度。
2. \ 3. 若采用除留余数法构造表,哈希函数为H (K )=K MOD 11,用链地址法解决冲突,试画出哈希表,并求在等概率情况下的平均查找长度。
十一. 有8个带权结点,权值为(3,7,8,2,6,10,14,9),试以它们为叶子结点构造一棵哈夫曼树(要求每个结点左子树的权值小于等于右子树的权值),并计算出带权路径长度。
十二. 一对称阵A n*n ,若只存储此对称阵的上半三角元,写出以行为主序存储和以列为主序存储时计算每一元素A ij 存储地址的公式。
十三. 算法设计1. 写出在循环单链表L 中查找查找第i 个元素的算法:SEARCH (L ,i )。
2. 设有如下题图4-3的单链表,链表头指针为H ,写一个将链表进行逆转的算法,逆转以后的链表为题图4-4所示。
3. 假定用一个带头结点的循环单链表表示循环队列(循环链队),该队列只设一个队尾题图4-4单链表示意图 题图4-4指针,不设头指针,试编写下面的算法:A.向循环链队中插入一个元素x的算法(入队)。
B.从循环链队中删除一个结点(出队)。
4.数组A[N]存放循环队列中的元素,同时设两个变量分别存储队尾元素的位置和队列中实际元素个数。
A.写出此队列的队满条件。
B.`C.写出此队列的出、入队算法。
5.设LA和LB为两个顺序存储的线性表,且元素按非递减排列,写出算法将其合并为LC,且LC中的元素也按非递减排列。
6.已知一个由n个整数组成的线性表,请定义该线性表的一种存储结构,并用C语言编写算法,实现将n个元素中所有大于等于20的整数放在所有小于等于20的整数之后,要求算法的时间复杂度为O(n),空间复杂度为O(1)。
7.编写算法,计算二叉树中叶子结点的数目。
8.编写一个按层次顺序(同一层自左向右)遍历二叉树的算法。
三种基于“分配”“收集”的线性排序算法---计数排序、桶排序与基数排序】文中代码见原文链接:非基于比较的排序]在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。
排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。
基于比较的排序算法是不能突破O(NlogN)的。
简单证明如下:N个数有N!个可能的排列情况,也就是说基于比较的排序算法的判定树有N!个叶子结点,比较次数至少为log(N!)=O(NlogN)(斯特林公式)。
而非基于比较的排序,如计数排序,桶排序,和在此基础上的基数排序,则可以突破O(NlogN)时间下限。
但要注意的是,非基于比较的排序算法的使用都是有条件限制的,例如元素的大小限制,相反,基于比较的排序则没有这种限制(在一定范围内)。
但并非因为有条件限制就会使非基于比较的排序算法变得无用,对于特定场合有着特殊的性质数据,非基于比较的排序算法则能够非常巧妙地解决。
本文着重介绍三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序。
[计数排序]首先从计数排序(Counting Sort)开始介绍起,假设我们有一个待排序的整数序列A,其中元素的最小值不小于0,最大值不超过K。
建立一个长度为K的线性表C,用来记录不大于每个值的元素的个数。
算法思路如下:[扫描序列A,以A中的每个元素的值为索引,把出现的个数填入C中。
此时C[i]可以表示A中值为i的元素的个数。
对于C从头开始累加,使C[i]<-C[i]+C[i-1]。
这样,C[i]就表示A中值不大于i的元素的个数。
按照统计出的值,输出结果。
由线性表C我们可以很方便地求出排序后的数据,定义B为目标的序列,Order[i]为排名第i的元素在A中的位置,则可以用以下方法统计。
View Code CPP1 2 3 4 5*6 7 8 9 10 11 12 13 14 15 :16 17/* Memo: 计数排序*/#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>(using namespace std;void CountingSort(int*A,int*B,int*Order,int N,int K) {int*C=new int[K+1];int i;memset(C,0,sizeof(int)*(K+1));for(i=1;i<=N;i++)K的随机数printf("Before CS:/n");for(i=1;i<=N;i++)printf("%d ",A[i]);$CountingSort(A,B,Order,N,K);18 19 20 21 22 23 24 25&26 27 28 29 30 31 32 33 34 35 ;36 37 38 39 40 41 42 43 44 45【46 47 48 49printf("/n After CS:/n");for(i=1;i<=N;i++)printf("%d ",B[i]);printf("/n Order:/n");for(i=1;i<=N;i++)printf("%d ",Order[i]);return0;}程序运行效果如下:$Before CS:2 8 5 1 10 5 9 93 5 6 6 2 8 2After CS:1 2 2 2 3 5 5 5 6 6 8 8 9 9 10Order:4 1 13 15 9 36 10 11 12 2 1478 5显然地,计数排序的时间复杂度为O(N+K),空间复杂度为O(N+K)。