数据结构与算法习题库(考前必备)
数据结构与算法分析考试试题
数据结构与算法分析考试试题一、选择题(共 20 小题,每小题 3 分,共 60 分)1、在一个具有 n 个元素的顺序表中,查找一个元素的平均时间复杂度为()A O(n)B O(logn)C O(nlogn)D O(n²)2、以下数据结构中,哪一个不是线性结构()A 栈B 队列C 二叉树D 线性表3、一个栈的入栈序列是 1,2,3,4,5,则栈的不可能的出栈序列是()A 5,4,3,2,1B 4,5,3,2,1C 4,3,5,1,2D 1,2,3,4,54、若一棵二叉树的先序遍历序列为 ABCDEFG,中序遍历序列为CBDAEGF,则其后序遍历序列为()A CDBGFEAB CDBFGEAC CDBAGFED BCDAGFE5、具有 n 个顶点的无向完全图的边数为()A n(n 1)B n(n 1) / 2C n(n + 1) / 2D n²6、以下排序算法中,在最坏情况下时间复杂度不是O(n²)的是()A 冒泡排序B 选择排序C 插入排序D 快速排序7、在一个长度为 n 的顺序表中,删除第 i 个元素(1≤i≤n)时,需要向前移动()个元素。
A n iB iC n i + 1D n i 18、对于一个具有 n 个顶点和 e 条边的有向图,其邻接表表示中,所有顶点的边表中边的总数为()A eB 2eC e/2D n(e 1)9、以下关于哈夫曼树的描述,错误的是()A 哈夫曼树是带权路径长度最短的二叉树B 哈夫曼树中没有度为 1 的节点C 哈夫曼树中两个权值最小的节点一定是兄弟节点D 哈夫曼树中每个节点的权值等于其左右子树权值之和10、用邻接矩阵存储一个具有 n 个顶点的无向图时,矩阵的大小为()A nB n²C (n 1)²D (n + 1)²11、下列关于堆的描述,正确的是()A 大根堆中,每个节点的值都大于其左右子节点的值B 小根堆中,每个节点的值都小于其左右子节点的值C 堆一定是完全二叉树D 以上都对12、在一个具有 n 个单元的顺序存储的循环队列中,假定 front 和rear 分别为队头指针和队尾指针,则判断队满的条件是()A (rear + 1) % n == frontB (front + 1) % n == rearC rear == frontD rear == 013、已知一个图的邻接表如下所示,从顶点 1 出发,按深度优先搜索法进行遍历,则得到的一种可能的顶点序列为()|顶点|邻接顶点|||||1|2, 3||2|4, 5||3|5||4|6||5|6||6| |A 1, 2, 4, 6, 5, 3B 1, 2, 5, 3, 4, 6C 1, 2, 3, 5, 4, 6D 1, 3, 2, 4, 5, 614、对线性表进行二分查找时,要求线性表必须()A 以顺序方式存储,且元素按值有序排列B 以顺序方式存储,且元素按值无序排列C 以链式方式存储,且元素按值有序排列D 以链式方式存储,且元素按值无序排列15、以下算法的时间复杂度为 O(nlogn)的是()A 顺序查找B 折半查找C 冒泡排序D 归并排序16、若某链表最常用的操作是在最后一个节点之后插入一个节点和删除最后一个节点,则采用()存储方式最节省时间。
数据结构与算法复习题库含答案
数据结构与算法复习题库含答案1. 问题描述:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
答案:可以使用哈希表来解决此问题。
首先初始化一个空的哈希表,然后遍历数组中的每个元素。
对于每个元素,首先计算目标值与当前元素的差值,然后在哈希表中查找该差值。
如果找到了该差值,则说明存在两个数的和等于目标值,返回这两个数的下标;否则,将当前元素插入到哈希表中。
时间复杂度为O(n),其中n为数组的长度。
2. 问题描述:给定一个字符串,找出其中不含重复字符的最长子串的长度。
答案:可以使用滑动窗口来解决此问题。
维护一个窗口,其中包含没有重复字符的子串。
遍历字符串中的每个字符,如果该字符不在窗口中,将其加入窗口;如果该字符在窗口中,移动窗口的左边界直到窗口中不包含重复字符。
记录窗口的最大长度。
时间复杂度为O(n),其中n为字符串的长度。
3. 问题描述:给定一个字符串和一个单词列表,找出字符串中可以由单词列表中的单词组成的所有子串的起始位置。
答案:可以使用滑动窗口和哈希表来解决此问题。
首先统计单词列表中每个单词的出现次数。
然后遍历字符串中的每个位置作为子串的起始位置,维护一个滑动窗口。
在窗口中依次取出长度和单词列表中单词总长度相等的子串,在哈希表中统计子串中每个单词出现的次数。
如果窗口中的子串与单词列表中的单词出现次数一致,则记录该子串的起始位置。
时间复杂度为O(n*m),其中n为字符串的长度,m为单词列表中的单词个数。
4. 问题描述:给定一个无序的整数数组,找出其中缺失的第一个正整数。
答案:可以使用原地哈希表来解决此问题。
遍历数组中的每个元素,将每个正整数放到数组中对应的位置上。
遍历数组中的每个元素,如果该位置上的数不等于数组索引加一,则该索引加一即为缺失的第一个正整数。
时间复杂度为O(n),其中n为数组的长度。
5. 问题描述:给定一个字符串s,找到s中最长的回文子串。
答案:可以使用动态规划来解决此问题。
数据结构与算法试题(1)
一、选择题1.在逻辑上可以把数据结构分成(A)A.线性结构和非线性结构B.动态结构和静态结构C.紧凑结构和非紧凑结构D.内部结构和外部结构2. 单链表中各结点之间的地址(C)A.必须连续B.部分必须连续C.不一定连续D.以上均不对3.在一个长度为n的顺序表中向第i个元素(0<i<=n+1)之前插入一个新元素时,需向后移动(B)个元素。
A、n-iB、n-i+1C、n-i-1D、i4. 插入和删除操作只能在一端进行的线性表,称为(C)。
A.队列B.线性表C.栈D.循环队列5、队列是仅允许在()进行插入,而在()进行删除。
(A)A.队尾,队首B.队尾,队尾C.队首,队尾D.队首,队首6.链表适合于(A)查找。
A.顺序B.二分C.随机D.顺序或二分7.数据的基本单位是(A)。
A.数据元素B.数据结构C.数据项D.数据对象8.下列哪个不是算法的特性(B)。
A.有穷性B.可数性C.可行性D.确定性9.在表长为n的顺序表中进行线性查找,它的平均查找长度为(B)。
A.ASL=nB.ASL=(n+1)/2C.ASL=n+1D.ASL=log2n10. 一个线性表第一个元素的存储地址是320,每个元素的长度为3,则第五个元素的地址是(C)。
A.311B.328C.332D.31311.设front、rear分别为循环双向链表结点的左指针和右指针,则指针P所指的元素是双循环链表L的尾元素的条件是(D)。
A.P==LB.P->front==LC.P==NULLD.P->rear==L12. 已知P为单链表中的非首尾结点,删除P结点的后继结点Q的语句为(A)。
A.P->NEXT=Q->NEXT;FREE(Q);B.Q->NEXT=P; FREE(Q);C.Q->NEXT=P->NEXT;FREE(Q);D.P->NEXT=S;S->NEXT=P;13.循环队列SQ队满的条件是(B)。
数据结构与算法设计考试试题
数据结构与算法设计考试试题一、选择题(共10题,每题2分,共20分)1. 下列哪种数据结构适合用于快速查找一个元素:A. 数组B. 栈C. 队列D. 哈希表2. 在二叉搜索树中,中序遍历可以得到一个有序的序列。
请问下列序列中哪个是中序遍历的结果:A. 2, 4, 6, 8, 10B. 10, 8, 6, 4, 2C. 2, 6, 4, 8, 10D. 6, 8, 4, 10, 23. 下面哪种排序算法的最好情况时间复杂度为O(nlogn):A. 冒泡排序B. 插入排序C. 选择排序D. 归并排序4. 哈希表通过将关键字映射到数组下标的方式来实现快速访问和插入。
请问下列哪种冲突处理方法是哈希表常用的:A. 开放地址法B. 建立链表法C. 折叠法D. 哈希函数法5. 堆排序是一种利用堆这种数据结构进行排序的算法,请问堆排序的时间复杂度是:A. O(n)B. O(nlogn)C. O(n^2)D. O(logn)6. Dijkstra算法是解决什么问题的经典算法:A. 最短路径问题B. 最大流问题C. 最小生成树问题D. 最长公共子序列问题7. 在图的表示中,邻接矩阵适合适用于什么类型的图:A. 稠密图B. 稀疏图C. 有向图D. 无向图8. 下面哪种搜索算法适用于有权图:A. 深度优先搜索B. 广度优先搜索C. Dijkstra算法D. A*算法9. 下面哪种数据结构不是线性结构:A. 数组B. 链表C. 栈D. 树10. 下列哪种数据结构可以实现先进先出的特性:A. 栈B. 队列C. 哈希表D. 树二、填空题(共5题,每题4分,共20分)1. 平衡二叉树的左子树和右子树的高度差不超过____。
2. 快速排序算法的时间复杂度为O(____)。
3. 广度优先搜索算法可以用来求解最____路径问题。
4. 图的最小生成树采用____算法来实现。
5. 哈希表的查找操作的平均时间复杂度为O(____)。
三、问答题(共5题,每题10分,共50分)1. 什么是数据结构?请举例说明一种常见的数据结构。
(完整版),算法与数据结构题库及答案,推荐文档
A 问题规模是 n2
B 问题规模与 n2 成正比
C 执行时间等于 n2
D 执行时间与 n2 成正比
2、关于数据结构的描述,不正确的是( )。
A 数据结构相同,对应的存储结构也相同。
B 数据结构涉及数据的逻辑结构、存储结构和施加其上的操作等三个方面。
C 数据结构操作的实现与存储结构有关。
D 定义逻辑结构时可不考虑存储结构。
D O(nlog2n)
28、n 个结点的线索二叉树中,线索的数目是( )。
A n-1
B n+1
C 2n
D 2n-1
29、若数据元素序列{11,12,13,7,8,9,23,4,5}是采用下列排序方法之一得到的第二趟排序
后的结果,则该排序方法只能是( )。
A 插入排序 B 选择排序 C 交换排序 D 归并排序
A. n+1
B. n
C. n-1
11. 一个递归算法必须包括__________。
D. n-2
A. 递归部分 B. 结束条件和递归部分 C. 迭代部分 D. 结束条件和迭代部分
12. 从逻辑上看可以把数据结构分为__________两大类。
第 1 页,共 8 页
A.动态结构、静态结构
B.顺序结构、链式结构
二、填空题
1、算法效率的度量分为 事后测量
和
事前估 两种。
2、算法是一个有穷的指令集,它为解决某一特定任务规定了一个运算序列。它应当具有
输入、输出、确定性、 有穷性
可行性等特性。
3、一个抽象数据类型 ADT 包括
数据操作 和 对象
两个部分。
4、队列的插入操作是在 队尾 进行,删除操作是在 队头
进行。
数据结构与算法复习题库含答案
数据结构复习题第一章概论一、选择题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 )。
fori0;im;i++forj0;jn;j++a[i][j]i*j;A. Om2B. On2C. Om*nD. Om+n6、算法是( D )。
A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。
A. OnB. Onlog2nC. On2D. Olog2n8、下面程序段的时间复杂度为( C )。
i1;whileinii*3;A. OnB. O3nC. Olog3nD. On39、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的( B )和运算等的学科。
A. 结构B. 关系C. 运算D. 算法10、下面程序段的时间复杂度是( A )。
is0;whilesni++;s+i;A. OnB. On2C. Olog2nD. On311、抽象数据类型的三个组成部分分别为( A )。
A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是(D)。
数据结构与算法习题集 习题集
数据结构习题集一、选择题1.在一个长度为n的顺序表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需向后移动B个元素。
A. n-1B. n-i+1C. n-i-1D. i2.在一个具有n个单元的顺序栈中,假定以地址低端作为栈底,以top作为栈顶指针,则当做退栈处理时,top变化为C。
A. top不变B. top=-n C. top=top-1 D. top=top+13.向顺序栈中压入元素时,是A。
A. 先存入元素,后移动栈顶指针B.先移动栈顶指针,后存入元素4.在一个顺序存储的循环队列中,队首指针指向队首元素的A。
A. 前一个位置B. 后一个位置C. 队首元素位置D. 队尾元素位置5.若进栈序列为1,2,3,4,进栈过程中可以出栈,则C不可能是一个出栈序列。
A. 3,4,2,1B. 2,4,3,1C. 1,4,2,3D. 3,2,1,46.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队空的条件是C。
A. front= =rear+1B. front+1= =rearC. front= =rearD. front= =07.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队满的条件是D。
A. rear % n= =frontB. (rear-1) % n= =frontC. (rear-1) % n= =rearD. (rear+1) % n= =front8.从一个具有n个节点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较D个结点。
A. nB. n/2C. (n-1)/2D. (n+1)/29.在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q和*p之间插入*s结点,则执行C。
A. s->next=p->next; p->next=s;B. p->next=s->next; s->next=p;C. q->next=s; s->next=p;D. p->next=s; s->next=q;10.向一个栈项指针为hs的链栈中插入一个*s结点时,则执行C。
数据结构与算法复习题+参考答案
数据结构与算法复习题+参考答案一、单选题(共100题,每题1分,共100分)1、设栈的顺序存储空间为 S(1:m),初始状态为 top=0。
现经过一系列正常的入栈与退栈操作后,top=m+1,则栈中的元素个数为A、m+1B、mC、不可能D、0正确答案:C2、小张完成了毕业论文,现需要在正文前添加论文目录以便检索和阅读,最优的操作方法是:A、利用 Word 提供的“手动目录”功能创建目录。
B、不使用内置标题样式,而是直接基于自定义样式创建目录。
C、将文档的各级标题设置为内置标题样式,然后基于内置标题样式自动插入目录。
D、直接输入作为目录的标题文字和相对应的页码创建目录。
正确答案:C3、赵老师在 Excel 中为 400 位学生每人制作了一个成绩条,每个成绩条之间有一个空行分隔。
他希望同时选中所有成绩条及分隔空行,最快捷的操作方法是:A、直接在成绩条区域中拖动鼠标进行选择B、单击成绩条区域的某一个单元格,然后按Ctrl+A 组合键两次C、单击成绩条区域的第一个单元格,然后按Ctrl+Shift+End 组合键D、单击成绩条区域的第一个单元格,按下Shift 键不放再单击该区域的最后一个单元格正确答案:C4、设某棵树的度为 3,其中度为 3,1,0 的结点个数分别为 3,4,15。
则该树中总结点数为A、35B、不可能有这样的树C、30D、22正确答案:C5、在商场购物时,顾客可以购买不同的商品,而同样的商品也销售给不同的顾客,则实体顾客和实体商品之间的联系是A、一对一B、一对多C、多对多D、多对一正确答案:C6、在具有 2n 个结点的完全二叉树中,叶子结点个数为A、n/2B、n-1C、nD、n+1正确答案:C7、PowerPoint 演示文稿包含了 20 张幻灯片,需要放映奇数页幻灯片,最优的操作方法是:A、将演示文稿的偶数张幻灯片删除后再放映。
B、将演示文稿的偶数张幻灯片设置为隐藏后再放映。
C、将演示文稿的所有奇数张幻灯片添加到自定义放映方案中,然后再放映。
数据结构与算法题库
数据结构与算法题库五、综合题1.已知一棵二叉树的先序遍历序列为ABECDFGHIJ,中序遍历序列为EBCDAFHIGJ。
(1) 画出这棵二叉树;(2) 写出该二叉树的后序遍历序列;(3) 画出这棵二叉树的中序线索二叉树的存储结构图。
2. 已知一棵二叉树的中根遍历序列为:2,4,1,5,3,7,6,8,后根遍历序列为:4,2,5,7,8,6,3,1。
(1)画出二叉树。
(2) 写出二叉树先根遍历序列。
(3) 画出该二叉树的先序线索二叉树。
3. 假设一颗二叉树的中序遍历序列为DCBGEAHFIJK和后序遍历序列为DCEGBFHKJIA.。
1)请画出该二叉树。
2)请画出该二叉树的后序序线索二叉树。
3)写出该二叉树的先序遍历序列。
4. 已知一棵二叉树的先序遍历序列为ABCDEFGHIJK,中序遍历序列为CDBGFEAHJIK。
(1)请构造二叉树;(2)画出先序线索二叉树。
(3)分别列出度为0、1和2的结点。
5.已知某通讯电文仅由a,b,c,d,e,f,g,h八个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
为这8中字母设计哈夫曼编码。
6. 假设用于通信的电文仅由5种字母ABCDE组成,每个字母出现的概率分别为0.12, 0.40,0.15, 0.08, 0.25。
(1) 用5个概率值为权值设计Huffman(哈夫曼)树。
(2) 计算它的带权路径长度WPL。
(3) 设计这5种字符的Huffman编码7.按下面要求转换森林和二叉树。
(1)将图-1的二叉树转换成森林。
(2)将图-2的树转换成二叉树。
图-1图-28. 画出下列二叉树相应的森林,并写出中序遍历森林的序列。
9. 已知一个无向网如下图所示,试用普里姆算法计算出该图的最小生成树,最小生成树为权值之和最小的生成树。
10. 已知一个无向图G=(V,E),V={A,B,C,D,E,F,G,H},E = {(A,B),(A,C),(B,D),(B,E),(C,F),(C,G),(D,H),(E,H),(F,G)};(1)画出该无向图;(2)画出该图的邻接表存储结构;(3)根据存储结构,写出深度优先搜索遍历序列和广度优先搜索遍历序列。
数据结构与算法知识题库与答案
数据结构与算法知识题库与答案1.冒泡排序的每一趟的过程是要比较()元素,如果逆序进行交换()。
[单选题] *A 相邻√B 都不对C 不相邻D 首尾2.冒泡排序要使用()语句判断两个相邻元素是否是逆序()。
[单选题] *A forB do-whileC whileD if√3.如果待排序序列是完全有序的,使用改进的冒泡排序,只需要()趟排序()。
[单选题] *A 三B 四C 一√D 二4.以下序列,采用优化的冒泡排序从小到大排序,排序比较次数最少的是()。
[单选题] *A 34,9,23,87,52,11B 23,98,17,33,71,2C 12,23,87,33,38,46√D 91,23,67,19,61,995.冒泡排序要使用()语句来完成排序()。
[单选题] *A for√B do-whileC whileD if6.N个记录使用优化的冒泡排序最少需要()趟排序,可以完成排序()。
[单选题] *A 1√B N-1C ND N-27.若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行()次比较()。
[单选题] *A 3B 10C 15√D 258.下列选项中说法正确的是()。
[单选题] *A 冒泡排序是使用循环嵌套来完成算法的√B 冒泡排序是使用单层循环来完成算法的C 无正确答案D 冒泡排序是使用三重循环来完成算法的9.8个元素{23,9,12,7,87,11,62,33}采用优化的冒泡排序需要排序()趟()。
[单选题] *A 3C 5D 610.6个元素{2,7,98,12,44,56}采用优化的冒泡排序,总共需要比较()次()。
[单选题] *A 1B 5C 9√D 1511.关于递归算法,以下说法错误的是()。
[单选题] *A 递归必须有结束条件B 递归次数太多会导致内存溢出C 递归就是指在一个方法的内部调用自身的过程D 递归可以调用无数次,只要有结束条件就可以。
数据结构与算法测试题+参考答案
数据结构与算法测试题+参考答案一、单选题(共80题,每题1分,共80分)1、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间?A、仅有头指针的单循环链表B、双链表C、仅有尾指针的单循环链表D、单链表正确答案:C2、数据结构研究的内容是()。
A、数据的逻辑结构B、数据的存储结构C、建立在相应逻辑结构和存储结构上的算法D、包括以上三个方面正确答案:D3、下列关于无向连通图特征的叙述中,正确的是:所有顶点的度之和为偶数边数大于顶点个数减1至少有一个顶点的度为1A、只有1B、1和2C、1和3D、只有2正确答案:A4、下面的程序段违反了算法的()原则。
void sam(){ int n=2;while (n%2==0) n+=2;printf(“%d”,n);}A、确定性B、可行性C、有穷性D、健壮性正确答案:C5、对任意给定的含 n (n>2) 个字符的有限集 S,用二叉树表示 S 的哈夫曼编码集和定长编码集,分别得到二叉树 T1 和 T2。
下列叙述中,正确的是:A、出现频次不同的字符在 T2 中处于相同的层B、出现频次不同的字符在 T1 中处于不同的层C、T1 的高度大于 T2 的高度D、T1 与 T2 的结点数相同正确答案:A6、数据序列{ 3,2,4,9,8,11,6,20 }只能是下列哪种排序算法的两趟排序结果?A、快速排序B、选择排序C、插入排序D、冒泡排序正确答案:A7、设散列表的地址区间为[0,16],散列函数为H(Key)=Key%17。
采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。
元素59存放在散列表中的地址是:A、11B、9C、10D、8正确答案:A8、采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是:A、每次划分后,先处理较短的分区可以减少递归次数B、递归次数与每次划分后得到的分区处理顺序无关C、递归次数与初始数据的排列次序无关D、每次划分后,先处理较长的分区可以减少递归次数正确答案:B9、以下数据结构中,()是非线性数据结构。
数据结构与算法题库(含参考答案)
数据结构与算法题库(含参考答案)一、单选题(共100题,每题1分,共100分)1、在一次校园活动中拍摄了很多数码照片,现需将这些照片整理到一个PowerPoint 演示文稿中,快速制作的最优操作方法是:A、创建一个 PowerPoint 相册文件。
B、创建一个 PowerPoint 演示文稿,然后批量插入图片。
C、创建一个 PowerPoint 演示文稿,然后在每页幻灯片中插入图片。
D、在文件夹中选中所有照片,然后单击鼠标右键直接发送到PowerPoint 演示文稿中。
正确答案:A2、下面对“对象”概念描述错误的是A、对象不具有封装性B、对象是属性和方法的封装体C、对象间的通信是靠消息传递D、一个对象是其对应类的实例正确答案:A3、设栈与队列初始状态为空。
首先A,B,C,D,E依次入栈,再F,G,H,I,J 依次入队;然后依次出队至队空,再依次出栈至栈空。
则输出序列为A、F,G,H,I,J,E,D,C,B,AB、E,D,C,B,A,J,I,H,G,FC、F,G,H,I,J,A,B,C,D,E,D、E,D,C,B,A,F,G,H,I,J正确答案:A4、设表的长度为 20。
则在最坏情况下,冒泡排序的比较次数为A、20B、19C、90D、190正确答案:D5、设二叉树的前序序列为 ABDEGHCFIJ,中序序列为 DBGEHACIFJ。
则后序序列为A、DGHEBIJFCAB、JIHGFEDCBAC、GHIJDEFBCAD、ABCDEFGHIJ正确答案:A6、Excel工作表B列保存了11位手机号码信息,为了保护个人隐私,需将手机号码的后 4 位均用“*”表示,以 B2 单元格为例,最优的操作方法是:A、=REPLACE(B2,7,4,"****")B、=REPLACE(B2,8,4,"****")C、=MID(B2,7,4,"****")D、=MID(B2,8,4,"****")第 10 组正确答案:B7、小金从网站上查到了最近一次全国人口普查的数据表格,他准备将这份表格中的数据引用到 Excel 中以便进一步分析,最优的操作方法是:A、通过 Excel 中的“自网站获取外部数据”功能,直接将网页上的表格导入到 Excel 工作表中。
数据结构与算法复习题
《数据结构与算法》复习题A(专升本)一、填空题1、数据结构被形式地定义为( D, R),其中D 是的有限集合, R 是D 上的有限集合。
2、数据结构包括数据的、数据的和数据的这三个方面的内容。
3、写出带头结点的双向循环链表L 为空表的条件。
4、在具有n个元素的循环队列中,队满时具有个元素。
5、求子串在主串中首次出现的位置的运算称为。
6、由3个结点所构成的二叉树有种形态。
7、数据的逻辑结构是指。
二、选择题1、若某线性表中最常用的操作是取第i 个元素和找第i个元素的前驱,则采用()存储方法最节省时间。
A.顺序表B.单链表C.双链表D.单循环链表2、二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。
A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子3、计算机算法指的是:()A. 计算方法B. 排序方法C. 解决问题的有限运算序列D. 调度方法4、栈和队列的主要区别在于()。
A.它们的逻辑结构不一样B.它们的存储结构不一样C.所包含的运算不一样D.插入删除运算的限定不一样5、为5个使用频率不等的字符设计哈弗曼编码,不可能的方案是()。
A.000,001,010,011,1B. 0000,0001,001,01,1C.000,001,01,10,11D.00,100,101,110,1116、用深度优先遍历方法遍历一个有向无环图,并在深度优先遍历算法中按退栈次序打印出相应的顶点,则输出的顶点序列是()。
A.逆拓扑有序B.拓扑有序C.无序D.顶点编号次序7、对如图所示的无向连通网图从顶点d开始用Prim算法构造最小生成树,在构造过程中加入最小生成树的前4条边依次是()。
A. (d,f)4, (f,e) 2 , (f,b) 3 (b,a) 5B. (f,e)2, (f,b) 3 , (a,c) 3 (f,d) 4C. (d,f)4, (f,e) 2 , (a,c) 3 (b,a) 5D. (d,f)4, (d,b) 5 , (f,e) 2 (b,a) 58、在采用线性探测法处理冲突所构成的闭散列表上进行查找,可能要探测多个位置,在查找成功的情况下,所探测的这些位置的键值()。
数据结构与算法练习题库(含答案)
数据结构与算法练习题库(含答案)一、单选题(共80题,每题1分,共80分)1、对一棵二叉树的结点从 1 开始顺序编号。
要求每个结点的编号大于其左子树所有结点的编号、但小于右子树中所有结点的编号。
可采用▁▁▁▁▁ 实现编号。
A、中序遍历B、先序遍历C、层次遍历D、后序遍历正确答案:A2、设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?A、5B、4C、2D、0正确答案:C3、两个有相同键值的元素具有不同的散列地址A、一定不会B、一定会C、可能会D、有万分之一的可能会正确答案:C4、将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。
散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。
问:当第一次发现有冲突时,散列表的装填因子大约是多少?A、0.73B、0.27C、0.64D、0.45正确答案:D5、对N个记录进行归并排序,归并趟数的数量级是:A、O(NlogN)B、O(logN)C、O(N)D、O(N2)正确答案:B6、下列说法不正确的是:A、图的遍历是从给定的源点出发每一个顶点仅被访问一次B、图的深度遍历不适用于有向图C、遍历的基本算法有两种:深度遍历和广度遍历D、图的深度遍历是一个递归过程正确答案:B7、二叉树的中序遍历也可以循环地完成。
给定循环中堆栈的操作序列如下(其中push为入栈,pop为出栈): push(1), push(2), push(3), pop(), push(4), pop(), pop(), push(5), pop(), pop(), push(6), pop()A、6是根结点B、2是4的父结点C、2和6是兄弟结点D、以上全不对正确答案:C8、设最小堆(小根堆)的层序遍历结果为{1, 3, 2, 5, 4, 7, 6}。
数据结构与算法第2章题库
第2章线性表一、选择题1.顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
A.110 B.108 C.100 D.120答案:B解析:顺序表中的数据连续存储,所以第5个元素的地址为:100+2*4=108。
难易程度:题型:单选题2.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。
A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)B.在第i个结点后插入一个新结点(1≤i≤n)C.删除第i个结点(1≤i≤n)D.将n个结点从小到大排序答案:A解析:在顺序表中插入一个结点的时间复杂度都是O(n2),排序的时间复杂度为O(n2)或O(nlog2n)。
顺序表是一种随机存取结构,访问第i个结点和求第i个结点的直接前驱都可以直接通过数组的下标直接定位,时间复杂度是O(1)。
难易程度:题型:单选题3. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为()。
A.8 B.63.5 C.63 D.7答案:B解析:平均要移动的元素个数为:n/2。
难易程度:题型:单选题4.链接存储的存储结构所占存储空间()。
A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针B.只有一部分,存放结点值C.只有一部分,存储表示结点间关系的指针D.分两部分,一部分存放结点值,另一部分存放结点所占单元数答案:A难易程度:题型:单选题5.线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。
A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以答案:D难易程度:题型:单选题6.线性表L在()情况下适用于使用链式结构实现。
A.需经常修改L中的结点值B.需不断对L进行删除插入C.L中含有大量的结点D.L中结点结构复杂答案:B解析:链表最大的优点在于插入和删除时不需要移动数据,直接修改指针即可。
难易程度:题型:单选题7.单链表的存储密度()。
数据结构与算法试题
数据结构与算法试题1.数据结构中,线性结构的特点是:() [单选题]A. 有且仅有一个根节点B. 有多个根节点C. 元素之间存在一对一关系(正确答案)D. 元素之间存在一对多关系2.在二叉树的前序遍历中,访问节点的顺序是:() [单选题]A. 左-右-根B. 根-左-右(正确答案)C. 右-左-根D. 根-右-左答案:B3.哈希表解决冲突的常用方法是:() [单选题]A. 链地址法(正确答案)B. 排序C. 二分查找D. 顺序存储4.快速排序算法的时间复杂度在最好情况下是:() [单选题]A. O(n^2)B. O(nlogn)(正确答案)C. O(n)D. O(logn)5.堆排序中,将一个无序序列构建成一个堆的过程称为:() [单选题]A. 堆的插入B. 堆的删除C. 堆的构建(正确答案)D. 堆的调整6.在图的遍历中,深度优先搜索(DFS)使用的是:() [单选题]A. 队列B. 栈(正确答案)C. 数组D. 链表7.冒泡排序的时间复杂度是:() [单选题]A. O(n)B. O(nlogn)C. O(n^2)(正确答案)D. O(2^n)8.以下哪个数据结构支持快速随机访问?() [单选题]A. 链表B. 栈C. 队列D. 数组(正确答案)9.动态数组在进行插入操作时,可能需要进行的操作是:() [单选题]A. 原地修改B. 移动元素(正确答案)C. 替换元素D. 复制元素10.归并排序的分治策略是:() [单选题]A. 分而治之(正确答案)B. 递归C. 迭代D. 循环11.在二叉搜索树中,查找一个元素的时间复杂度是:() [单选题]A. O(1)B. O(logn)(正确答案)C. O(n)D. O(n^2)12.以下哪个排序算法是稳定的?() [单选题]A. 快速排序B. 归并排序(正确答案)C. 堆排序D. 冒泡排序13.拓扑排序是针对哪种数据结构的排序?() [单选题]A. 树B. 图(正确答案)C. 链表D. 数组14.在图的遍历中,广度优先搜索(BFS)使用的是:() [单选题]A. 队列(正确答案)B. 栈C. 数组D. 链表15.哈夫曼编码是一种用于数据压缩的算法,它基于:() [单选题]A. 最小堆(正确答案)B. 最大堆C. 优先队列D. 排序16.以下哪个算法用于解决最近公共祖先问题?() [单选题]A. 深度优先搜索(正确答案)B. 广度优先搜索C. 二分查找D. 分治法17.动态规划算法通常用于解决:() [单选题]A. 排序问题B. 搜索问题C. 最优化问题(正确答案)D. 数据压缩问题18.在图的表示中,邻接矩阵适用于表示:() [单选题]A. 稀疏图B. 稠密图(正确答案)C. 有向图D. 无向图19.以下哪个排序算法在最好、最坏和平均情况下的时间复杂度都是O(n)?() [单选题]A. 快速排序B. 归并排序C. 计数排序(正确答案)D. 桶排序20.递归算法的时间复杂度通常取决于:() [单选题]A. 递归的深度(正确答案)B. 递归的广度C. 递归的类型D. 递归的参数。
数据结构与算法试题及
数据结构与算法试题及答案参考数据结构与算法试题及答案参考一、选择题1. 数据结构是研究什么的?A. 数据的结构和组织B. 数据的格式和排列C. 数据的读取和写入D. 数据的传输和存储正确答案:A2. 在数据结构中,栈(Stack)的特点是什么?A. 先进先出B. 先进后出C. 后进先出D. 后进后出正确答案:C3. 在链表中,结点的指针指向的是什么?A. 结点本身B. 结点的前一个结点C. 结点的后一个结点D. 结点的数据域正确答案:C4. 在二叉搜索树中,左子树的值都小于根节点,右子树的值都大于根节点。
这种特性被称为什么性质?A. 有序性B. 平衡性C. 完全性D. 二叉性正确答案:A二、填空题1. 算法的复杂度可以分为时间复杂度和________复杂度。
正确答案:空间2. 实现队列数据结构可以采用两个栈的方式,称为______队列。
正确答案:双栈3. 快速排序算法的时间复杂度为______。
正确答案:O(nlogn)三、编程题1. 请编写一个函数,实现对一个数组进行冒泡排序。
正确答案:```pythondef bubble_sort(arr):for i in range(len(arr) - 1):for j in range(len(arr) - 1 - i):if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j]return arr```2. 请编写一个递归函数,计算斐波那契数列的第n项。
正确答案:```pythondef fibonacci(n):if n <= 1:return nelse:return fibonacci(n - 1) + fibonacci(n - 2)```四、简答题1. 请简单描述树和图的区别。
答:树是一种特殊的图,它是一个由节点和边组成的非线性数据结构,具有层级关系,且任意两个节点之间有且仅有一条路径相连。
数据结构与算法习题
数据结构与算法习题习题1⼀、选择题1.数据结构通常是研究数据的()及它们之间的相互联系。
A.存储结构和逻辑结构B.存储和抽象C.联系和抽象D.联系与逻辑2.从逻辑上可以把数据结构分为()两⼤类。
A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、⾮线性结构D.初等结构、构造型结构3.数据处理的基本单位是()。
A.数据元素B.数据项C.数据类型D.数据变量4.数据结构中线性结构中元素对应关系为()。
A.⼀对⼀B.⼀对多C.多对多D.⽆关系5.数据结构中树形结构中元素对应关系为()。
A.⼀对⼀B.⼀对多C.多对多D.⽆关系6.数据结构中图形结构中元素对应关系为()。
A.⼀对⼀B.⼀对多C.多对多D.⽆关系7.数据在计算机存储器内表⽰时,物理地址和逻辑地址相同并且是连续的,称为()。
A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构8.⾮线性结构中的每个结点()。
A.⽆直接前趋结点B.⽆直接后继结点C.只有⼀个直接前趋结点和⼀个直接后继结点D.可能有多个直接前趋结点和多个直接后继结点9.链式存储的存储结构所占存储空间()。
A.分两部分,⼀部分存放结点的值,另⼀部分存放表⽰结点间关系的指针B.只有⼀部分,存放结点的值C.只有⼀部分,存储表⽰结点间关系的指针D.分两部分,⼀部分存放结点的值,另⼀部分存放结点所占单元素10.算法分析的两个主要⽅⾯是()。
A.正确性和简单性B.可读性和⽂档性C.数据复杂性和程序复杂性D.时间复杂度和空间复杂度11.算法的计算量⼤⼩称为算法的()。
A.现实性B.难度C.时间复杂性D.效率12.数据的基本单位是()。
A.数据结构B.数据元素C.数据项D.⽂件13.每个结点只含有⼀个数据元素,所有存储结点相继存放在⼀个连续的存储区⾥,这种存储结构称为()结构。
A.顺序存储B.链式存储C.索引存储D.散列存储14.每⼀个存储结点不仅含有⼀个数据元素,还包含⼀组指针,该存储⽅式是()存储⽅式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章绪论一.选择题1.数据结构被形式地定义为(K,R),其中K是①_B_的有限集合,R是K上的②_D_的有限集合。
①A.算法B.数据元素C.数据操作D.逻辑结构②A.操作B.映象C.存储D.关系2.算法分析的目的是①C,算法分析的两个主要方面是②A。
①A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性②A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性3.在计算机存储器内表示时,物理地址和逻辑地址相同并且是连续的,称之为(B)A.逻辑结构B.顺序存储结构C.链表存储结构D.以上都不对4.数据结构中,在逻辑上可以把数据结构分成:(C)。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构5.以下属于顺序存储结构优点的是(A)。
A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示6.数据结构研究的内容是(D)。
A.数据的逻辑结构B.数据的存储结构C.建立在相应逻辑结构和存储结构上的算法D.包括以上三个方面7.链式存储的存储结构所占存储空间(A)。
A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针B.只有一部分,存放结点值C.只有一部分,存储表示结点间关系的指针D.分两部分,一部分存放结点值,另一部分存放结点所占单元数8.一个正确的算法应该具有5个特性,除输入、输出特性外,另外3个特性是(A)。
A.确定性、可行性、有穷性B.易读性、确定性、有效性C.有穷性、稳定性、确定性D.可行性、易读性、有穷性9.以下关于数据的逻辑结构的叙述中正确的是(A)。
A.数据的逻辑结构是数据间关系的描述B.数据的逻辑结构反映了数据在计算机中的存储方式C.数据的逻辑结构分为顺序结构和链式结构D.数据的逻辑结构分为静态结构和动态结构10.算法分析的主要任务是(C)。
A.探讨算法的正确性和可读性B.探讨数据组织方式的合理性C.为给定问题寻找一种性能良好的解决方案D.研究数据之间的逻辑关系二.解答设有一数据的逻辑结构为:B=(D,S),其中:D={d1,d2,…,d9}S={<d1,d3>,<d1,d8>,<d2,d3>,<d2,d4>,<d2,d5>,<d3,d9>,<d4,d7>,<d4,d6>, <d5,d6>,<d8,d9>,<d9,d7>}画出这个逻辑结构示意图。
d1d8 d3d2d4d5d9d7 d6第二章线性表一、选择题1.下述哪一条是顺序存储结构的优点?(A)A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?(B)A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
3.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用(A)存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表4.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(D)存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表5.在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动(A)个元素A.n-i B.n-i+l C.n-i-1D.i6.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较(C)个元素结点A.n/2B.n C.(n+1)/2D.(n-1)/27.设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为(A)A.p->next=p->next->next;B.p=p->next;C.p=p->next->next;D.p->next=p;8.在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行(B)A.s->next=p->next;p->next=sB.q->next=s;s->next=pC.p->next=s->next;s->next=pD.p->next=s;s->next=q9.线性表的顺序存储结构是一种(A)的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取二、填空1.在线性表的顺序存储中,元素之间的逻辑关系是通过物理位置相邻决定的;在线性表的链接存储中,元素之间的逻辑关系是通过指针决定的。
2.在双向链表中,每个结点含有两个指针域,一个指向.直接前驱结点,另一个指向直接后继结点。
3.当对一个线性表经常进行存取操作,而很少进行插入和删除操作时,则采用_顺序存储结构为宜。
相反,当经常进行的是插入和删除操作时,则采用链式存储结构为宜。
三、算法设计1.设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的算法(要求用最少的时间和最小的空间)①确定在序列中比正整数x大的数有几个(相同的数只计算一次)②将单链表中比正整数x小的偶数从单链表中删除int count(Linklist h,int x){int num=0;Linknode*p;p=h->next;while(p&&p->data<=x)//p指针向后移动,直至p指向第一个值大于x的结点p=p->next;while(p)if(p->next&&p->data==p->next->data)//若p没有指向链表中同一数值的最后一个结点,则向后移动p=p->next;else//若p指向数值相同的结点中的最后一个,则num加1,p指针后移,继续执行while循环{num++;p=p->next;}return num;}②void delevenl(Linklist&h,int x){Linknode*p,*r;p=h->next;r=h;while(p&&p->data<x){if(p->data%2==0){r->next=p->next;free(p);p=r->next;}else{r=p;p=p->next;}}}2.设有一个表头指针为h 的单链表。
试设计一个算法,通过遍历一趟链表,将链表中所有结点的链接方向逆转,如下图所示。
要求逆转结果链表的表头指针h 指向原链表的最后一个结点。
2.void converse(Linklist &h){Linknode *p,*q;p=h->next;h->next=NULL;q=p->next;while(q){p->next=h;h=p;p=q;q=q->next;}p->next=h;h=p;}3.设计算法将一个带头结点的单链表A 分解为两个具有相同结构的链表B 、C ,其中B 表的结点为A 表中值小于零的结点,而C 表的结点为A 表中值大于零的结点(链表A 的元素类型为整型,要求B 、C 表利用A 表的结点)。
3.void decompose(Linklist La,Linklist &Lb,Linklist &Lc){Linknode *p;Lc=(Linknode *)malloc(sizeof(Linknode));Lc->next=NULL;p=La->next;Lb=La;Lb->next=NULL;while(p){La=p->next;if(p->data>0){p->next=Lc->next;Lc->next=p;phhΛΛΛ}else{p->next=Lb->next;Lb->next=p;}p=La;}}4.假设链表A、B分别表示一个集合,试设计算法以判断集合A是否是集合B的子集,若是,则返回1,否则返回0,并分析算法的时间复杂度。
4.int subset(LinkList la,LinkList lb){LinkNode*pa,*pb;pa=la->next;while(pa){pb=lb->next;while(pb&&(pb->data!=pa->data))pb=pb->next;if(!pb)return0;pa=pa->next;}return1;}算法时间复杂度O(A.Length*B.Length)5.设有一单循环链表la,其结点有三个域:prior、data与next,其中data为数据域,,next 域指向直接后继,prior域应指向直接前驱,但目前空着。
试写一算法将此单循环链表改造为双向循环链表。
5.void priorset(DuLinkList&la){p=la;q=la->next;while(q!=la){q->prior=p;p=q;q=q->next;}q->prior=p;}第三章栈和队列一、选择题1.已知栈的最大容量为4。
若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为(C)A.5,4,3,2,1,6B.2,3,5,6,1,4C.3,2,5,4,1,6D.1,4,6,5,2,3设有一个栈,元素的进栈次序为A,B,C,D,E,下列是不可能的出栈序列(C)A.A,B,C,D,E B.B,C,D,E,AC.E,A,B,C,D D.E,D,C,B,A2.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为(C)A.top不变B.top=0C.top--D.top++3.向一个栈顶指针为hs的链栈中插入一个s结点时,应执行(B)A.hs->next=s;B.s->next=hs;hs=s;C.s->next=hs->next;hs->next=s;D.s->next=hs;hs=hs->next;4.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为(D)A.rear%n==front B.(front+l)%n==rearC.rear%n-1==front D.(rear+l)%n==front5.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队空的条件为(C)A.rear%n==front B.front+l=rearC.rear==front D.(rear+l)%n=front6.在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为(A)A.front=front->next B.rear=rear->nextC.rear=front->next D.front=rear->next7.某堆栈的输入序列为1,2,3,…,n,输出序列的第一个元素是n,则第i 个输出元素为(C)A.i B.n-i C.n-i+1D.哪个元素无所谓8.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时(D)。