数据结构笔试面试的总结
堆和栈的区别:
一、堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS 回收,分配方式倒是类似于链表。
二、堆栈缓存方式区别:
1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
三、堆栈数据结构区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
栈和队列的共同特点是(只允许在端点处插入和删除元素)
栈通常采用的两种存储结构是(线性存储结构和链表存储结构)
栈有后进先出的特征
队列先进先出
链表的特点是:不必事先估计存储空间, 插入删除不需要移动元素, 所需空间与线性表长度成正比
用链表表示线性表的优点是(便于插入和删除操作)
8. 在单链表中,增加头结点的目的是(方便运算的实现)
9. 循环链表的主要优点是(从表中任一结点出发都能访问到整个链表) 10.线性表L =(a1,a2,a3,……ai,……an),下列说法正确的是(D )
A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素 C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
11. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D )
A. 必须是连续的 B.部分地址必须是连续的C. 一定是不连续的 D.连续不连续都可以 12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)
13. 树是结点的集合,它的根结点数目是(有且只有1) 14.在深度为5的满二叉树中,叶子结点的个数为(31) 15.具有3个结点的二叉树有(5种形态)
16. 设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为
(13)
17. 已知二叉树后序遍历序列是dabec ,中序遍历序列是debac ,它的前序遍历序列是
(cedba )
18. 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH 和DBGEACHF ,则该二叉树的后序遍历为(DGEBHFCA )
19. 若某二叉树的前序遍历访问顺序是abdgcefh ,中序遍历访问顺序是dgbaechf ,则其后序遍历的结点访问顺序是(gdbehfca )
20. 数据库保护分为:安全性控制、 完整性控制 、并发性控制和数据的恢复。
1. 在计算机中,算法是指(解题方案的准确而完整的描述)
2. 在下列选项中,哪个不是一个算法一般应该具有的基本特征(无穷性)
说明:算法的四个基本特征是:可行性、确定性、有穷性和拥有足够的情报。 3. 算法一般都可以用哪几种控制结构组合而成(顺序、选择、循环) 4.算法的时间复杂度是指(算法执行过程中所需要的基本运算次数) 5. 算法的空间复杂度是指(执行过程中所需要的存储空间) 6. 算法分析的目的是(分析算法的效率以求改进) 7. 下列叙述正确的是(C )
A .算法的执行效率与数据的存储结构无关
B .算法的空间复杂度是指算法程序中指令(或语句)的条数 C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 D.算法的时间复杂度是指执行算法程序所需要的时间
8. 数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的位置不一定是连续的,但表头元素一定存储在其他元素的前面 D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的
24. 下列叙述中正确的是(A )
A .线性表是线性结构
B .栈与队列是非线性结构
C .线性链表是非线性结构
D .二叉树是线性结构
25. 线性表L =(a1,a2,a3,……ai,……an),下列说法正确的是(D )
A .每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素
C .表中诸元素的排列顺序必须是由小到大或由大到小D .除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
26. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址(连续不连续都可以)
27. 链表具有的特点是
A .不必事先估计存储空间
C .插入删除不需要移动元素
D .所需空间与线性表长度成正比
28. 非空的循环单链表head 的尾结点(由p 所指向),满足(p->next=head)
29.与单向链表相比,双向链表的优点之一是(更容易访问相邻结点)
30. 在(D )中,只要指出表中任何一个结点的位置,就可以从它出发依次访问到表中坏情况下,下列顺序方法中时间复杂度最小的是(堆排序)
51. 希尔排序法属于(插入类排序)
52. 堆排序法属于(选择类排序)
53. 在下列几种排序方法中,要求内存量最大的是(归并排序) 54. 已知数据表A 中每个元素距其最终位置不远,为节省时间,应采用(直接插入排序) 55. 算法的基本特征是可行性、确定性、 有穷性 和拥有足够的情报。
1. 一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。
1. 算法的复杂度主要包括时间复杂度和 空间 复杂度。
2. 实现算法所需的存储单元多少和算法的工作量大小分别称为算法的空间复杂度和时间复杂度 。
3. 所谓数据处理是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。
4. 数据结构是指相互有关联的 数据元素的集合。
5. 数据结构分为逻辑结构与存储结构,线性链表属于存储结构。
6.数据结构包括数据的 逻辑 结构和数据的存储结构。
7. 数据结构包括数据的逻辑结构、数据的 存储结构 以及对数据的操作运算。
8. 数据元素之间的任何关系都可以用 前趋和后继 关系来描述。
9.数据的逻辑结构有线性结构和非线性结构两大类。
10. 常用的存储结构有顺序、链接、 索引 等存储结构。
11. 顺序存储方法是把逻辑上相邻的结点存储在物理位置 相邻 的存储单元中。
12. 栈的基本运算有三种:入栈、退栈与读栈顶元素 。
13. 队列主要有两种基本运算:入队运算与 退队运算 。
14. 在实际应用中,带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为 可利用栈 。
15. 栈和队列通常采用的存储结构是 链式存储和顺序存储.
16. 当线性表采用顺序存储结构实现存储时,其主要特点是 逻辑结构中相邻的结点在存储结构中仍相邻 。
17. 循环队列主要有两种基本运算:入队运算与退队运算。每进行一次入队运算,队尾指针就 进1 。
18. 当循环队列非空且队尾指针等于对头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 上溢 。
19. 当循环队列为空时,不能进行退队运算,这种情况称为 下溢 。
20. 在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有 18 个元素。注:当rearfront时,元素个数=rear -front 。