120道BAT数据结构与算法面试题【建议收藏】
1.栈和队列的共同特点是(只允许在端点处插入和删除元素)
2.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是(e2,e4,e3,e1)
3.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是(DCBEA)
4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构)
5.下列关于栈的叙述正确的是(D)
A.栈是非线性结构
B.栈是一种树状结构
C.栈具有先进先出的特征
D.栈有后进先出的特征
6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素
C.插入删除不需要移动元素 D.所需空间与线性表长度成正比
7.用链表表示线性表的优点是(便于插入和删除操作)
8.在单链表中,增加头结点的目的是(方便运算的实现)
9.循环链表的主要优点是(从表中任一结点出发都能访问到整个链表)
10.线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)
A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)
13.树是结点的集合,它的根结点数目是(有且只有1)
14.在深度为5的满二叉树中,叶子结点的个数为(31)
15.具有3个结点的二叉树有(5种形态)
16.设一棵二叉树中有3个叶子结点,有8个度为1的结点c,则该二叉树中总的结点数为(13)
17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)
18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)
19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)
-
在计算机中,算法是指(解题方案的准确而完整的描述)
21.在下列选项中,哪个不是一个算法一般应该具有的基本特征(无穷性)
说明:算法的四个基本特征是:可行性、确定性、有穷性和拥有足够的情报。
-
算法一般都可以用哪几种控制结构组合而成(顺序、选择、循环)
23.算法的时间复杂度是指(算法执行过程中所需要的基本运算次数)
-
算法的空间复杂度是指(执行过程中所需要的存储空间)
-
算法分析的目的是(分析算法的效率以求改进)
-
下列叙述正确的是(C)
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.算法的时间复杂度是指执行算法程序所需要的时间
27.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及(数据的存储结构)
-
数据结构中,与所使用的计算机无关的是数据的(C)
A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构
-
下列叙述中,错误的是(B)
A.数据的存储结构与数据处理的效率密切相关
B.数据的存储结构与数据处理的效率无关
C.数据的存储结构在计算机中所占的空间不一定是连续的
D.一种数据的逻辑结构可以有多种存储结构
-
数据的存储结构是指(数据的逻辑结构在计算机中的表示)
-
数据的逻辑结构是指(反映数据元素之间逻辑关系的数据结构)
-
根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为(线性结构和非线性结构)
-
下列数据结构具有记忆功能的是(C)A.队列B.循环队列C.栈D.顺序表
-
下列数据结构中,按先进后出原则组织数据的是(B)
A.线性链表 B.栈 C.循环链表 D.顺序表
-
递归算法一般需要利用(队列)实现。
-
下列关于栈的叙述中正确的是(D)A.在栈中只能插入数据B.在栈中只能删除数据
C.栈是先进先出的线性表 D.栈是先进后出的线性表
-
栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是(DCBEA)
38.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是(e2,e4,e3,e1)
-
由两个栈共享一个存储空间的好处是(节省存储空间,降低上溢发生的机率)
-
应用程序在执行过程中,需要通过打印机输出数据时,一般先形成一个打印作业,将其存放在硬盘中的一个指定(队列)中,当打印机空闲时,就会按先来先服务的方式从中取出待打印的作业进行打印。
41.下列关于队列的叙述中正确的是(C)A.在队列中只能插入数据B.在队列中只能删除数据 C.队列是先进先出的线性表 D.队列是先进后出的线性表
42.下列叙述中,正确的是(D) A.线性链表中的各元素在存储空间中的位置必须是连续的
B.线性链表中的表头元素一定存储在其他元素的前面 C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的
43.下列叙述中正确的是(A)A.线性表是线性结构 B.栈与队列是非线性结构
C.线性链表是非线性结构 D.二叉树是线性结构
-
线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)
A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
-
链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素
C.插入删除不需要移动元素 D.所需空间与线性表长度成正比
-
非空的循环单链表head的尾结点(由p所指向),满足(p->next=head)
48.与单向链表相比,双向链表的优点之一是(更容易访问相邻结点)
-
在(D)中,只要指出表中任何一个结点的位置,就可以从它出发依次访问到表中其他所有结点。A.线性单链表 B.双向链表 C.线性链表 D.循环链表
-
以下数据结构属于非线性数据结构的是(C)A.队列 B.线性表C.二叉树 D.栈
51.树是结点的集合,它的根结点数目是(有且只有1)
52.具有3个结点的二叉树有(5种形态)
-
在一棵二叉树上第8层的结点数最多是(128) 注:2K-1
-
在深度为5的满二叉树中,叶子结点的个数为(16) 注:2n-1
-
在深度为5的满二叉树中,共有(31)个结点。注:2n-1
56.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(350)
说明:完全二叉树总结点数为N,若N为奇数,则叶子结点数为(N+1)/2;若N为偶数,则叶子结点数为N/2。
-
设有下列二叉树,对此二叉树中序遍历的结果是(B)
A.ABCDEF
B.DBEAFC
C.ABDECF
D.DEBFCA
58.已知二叉树后序遍历序列是dabec,中序遍历序列debac,它的前序遍历序列是(cedba)
-
已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)
60.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)
-
串的长度是(串中所含字符的个数)
62.设有两个串p和q,求q在p中首次出现位置的运算称做(模式匹配)
-
N个顶点的连通图中边的条数至少为(N-1)
64.N个顶点的强连通图的边数至少有(N)
65.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(N)
-
最简单的交换排序方法是(冒泡排序)
67.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为(n(n-1)/2)
-
在待排序的元素序列基本有序的前提下,效率最高的排序方法是(冒泡排序)
-
在最坏情况下,下列顺序方法中时间复杂度最小的是(堆排序)
-
希尔排序法属于(插入类排序)
-
堆排序法属于(选择类排序)
-
在下列几种排序方法中,要求内存量最大的是(归并排序)
-
已知数据表A中每个元素距其最终位置不远,为节省时间,应采用(直接插入排序)
-
算法的基本特征是可行性、确定性、 有穷性 和拥有足够的情报。
-
算法的复杂度主要包括时间复杂度和 空间 复杂度。
-
实现算法所需的存储单元多少和算法的工作量大小分别称为算法的空间复杂度和时间复杂度 。
3.所谓数据处理是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。
4.数据结构是指相互有关联的 数据元素 的集合。
5.数据结构分为逻辑结构与存储结构,线性链表属于 存储结构 。
6.数据结构包括数据的 逻辑 结构和数据的存储结构。
-
数据结构包括数据的逻辑结构、数据的 存储结构 以及对数据的操作运算。
8.数据元素之间的任何关系都可以用 前趋和后继 关系来描述。
9.数据的逻辑结构有线性结构和非线性结构两大类。
10.常用的存储结构有顺序、链接、 索引 等存储结构。
-
顺序存储方法是把逻辑上相邻的结点存储在物理位置 相邻 的存储单元中。
-
栈的基本运算有三种:入栈、退栈与读栈顶元素 。
-
队列主要有两种基本运算:入队运算与 退队运算 。
-
在实际应用中,带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为 可利用栈 。
15.栈和队列通常采用的存储结构是 链式存储和顺序存储 。
16.当线性表采用顺序存储结构实现存储时,其主要特点是 逻辑结构中相邻的结点在存储结构中仍相邻 。
-
循环队列主要有两种基本运算:入队运算与退队运算。每进行一次入队运算,队尾指针就 进1。
18.当循环队列非空且队尾指针等于对头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 上溢 。
19.当循环队列为空时,不能进行退队运算,这种情况称为 下溢 。
-
在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有18个元素。注:当rear
当rear>front时,元素个数=rear-front。
-
在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有3个元素。
22.顺序查找一般是指在 线性表 中查找指定的元素。
23.在计算机中存放线性表,一种最简单的方法是 顺序存储 。
24.在程序设计语言中,通常定义一个 一维数组 来表示线性表的顺序存储空间。
25.在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为 指针域 。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
26.在 线性单链表中 ,每一个结点只有一个指针域,由这个指针只能找到后继结点,但不能找到前驱结点。
-
为了要在线性链表中插入一个新元素,首先要给该元素分配一个 新结点 ,以便用于存储该元素的值。
-
在线性链表中删除一个元素后,只需要改变被删除元素所在结点的前一个结点的 指针域 即可。
-
用链表表示线性表的突出优点是 便于插入和删除操作 。
-
在树形结构中,树根结点没有 前件 。
-
在树结构中,一个结点所拥有的后件个数称为该结点的度。叶子结点的度为 0。
-
设一棵二叉树中有3个叶子结点,8个度为1的结点,则该二叉树中总的结点数为13。
-
设一棵完全二叉树共有739个结点,则在该二叉树中有370个叶子结点。
-
设一棵完全二叉树共有700个结点,则在该二叉树中有350个叶子结点。
-
在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、 中序 遍历和后序遍历。
-
若串S="Program",则其子串的数目是29。注:n(n+1)/2+1
-
若串S=”MathTypes”,则其子串的数目是46。
-
对长度为n的线性表进行插入一个新元素或删除一个元素时,在最坏情况下所需要的比较次数为n。
-
在长度为n的有序线性表中进行顺序查找。最坏的情况下,需要的比较次数为 n 。
-
在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为log2n。
-
长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为n/2。
-
排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 交换排序 和选择排序等。
-
快速排序法可以实现通过一次交换而消除多个 逆序 。
-
快速排序法的关键是对线性表进行 分割 。
-
冒泡排序算法在最好的情况下的元素交换次数为 0。
-
在最坏情况下,冒泡排序的时间复杂度为 n(n-1) /2。
-
对于长度为n的线性表,在最坏情况下,快速排序所需要的比较次数为n(n-1) /2。
48.在最坏情况下,简单插入排序需要比较的次数为 n(n-1) /2。
49.在最坏情况下,希尔排序需要比较的次数为 O(n1.5)。注:括号里是n的1.5次方。
-
在最坏情况下,简单选择排序需要比较的次数为 n(n-1) /2。
-
在最坏情况下,堆排序需要比较的次数为 o(nlog2n)。
52.对于输入为N个数进行快速排序算法的平均时间复杂度是O(Nlog2 N)。
你点的每一个在看,我都认真当成了喜欢