计算机复试常见问题--数据结构

1. 时间复杂度

时间复杂度是指执行算法所需要的计算工作量,因为整个算法的执行时间与基本操作重复执行的次数成正 比,所以将算法中基本操作的次数作为算法时间复杂度的度量,一般情况下,按照基本操作次数最多的输 入来计算时间复杂度,并且多数情况下我们去最深层循环内的语句所描述的操作作为基本操作。

2. 循环队列的顺序表中,为什么要空一个位置?

这是为了用来区分队空与队满的情况。如果不空一个位置,则判断队空和队满的条件是一样的。

3. 什么是二叉排序树?以及它的原理,算法。(二叉排序树的查找过程)

二叉排序树又称二叉查找树,它或者是一颗空树,或者满足一下性质的二叉树: ① 若左子树不空,则左子树上所有结点的值均小于根节点的值; ② 若右子树不空,则右子树上所有结点的值均大于根节点的值; ③ 左右子树也分别是二叉排序树。 原理步骤: 若根结点的关键字值等于查找的关键字,成功。 否则,若小于根结点的关键字值,递归查左子树。 若大于根结点的关键字值,递归查右子树。 若子树为空,查找不成功。

4. 哈夫曼树

定义: 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二 叉树,也称为哈夫曼树(Huffman tree)。 构造方法: 假设有 n 个权值,则构造出的哈夫曼树有 n 个叶子结点。 n 个权值分别设为 w1、w2、…、wn,则哈夫 曼树的构造规则为: (1) 将 w1、w2、…,wn 看成是有 n 棵树的森林(每棵树仅有一个结点);

(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其 左、右子树根结点权值之和;

(3)从森林中删除选取的两棵树,并将新树加入森林;

(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。 特点: ① 权值越大的结点,距离根节点越近; ② 树中没有度为一的结点。 应用: 哈夫曼编码,减少编码的长度。哈夫曼编码就是长度最短的前缀编码。

5. 什么是哈希冲突?以及如何解决。

散列(哈希)表: 根据关键码值(Key value)而直接进行访问的数据结构。根据给定的关键字来计算出关键字在表中的地址,以加快查找的速度。

冲突:指的是多个关键字映射同一个地址的情况。 解决办法:

(1) 开放定址法 ① 线性探查法(产生堆积问题); ② 平方探查法(不能探查到哈希表上所有的地址,但至少能探查到一半的地址)

(2) 链地址法 把所有的同义词用单链表连接起来。 补充(常见的哈希函数构造方法) 直接定址法,数字分析法,平方取中法,除留余数法。

6. 深度优先搜索遍历和广度优先搜索遍历的过程

深度优先搜索遍历 基本思想:首先访问出发点 V,并将其标记为已访问;然后选取与 V 邻接的未被访问的邻接顶点 W,访问 W;再选取与 W 邻接的未被访问的顶点访问,以此类推。当一个顶点所有的邻接顶点都被访问过时,则依 次退回最近被访问过的顶点,若该顶点还有其他邻接顶点未被访问,则从这些顶点中去一个顶点进行上述 的过程,直至图中所有顶点都被访问过为止。

广度优先搜索遍历 基本思想:首先访问起始顶点 V,然后选取与 V 邻接的全部顶点 w1,w2,….,wn 进行访问,再一次访 问与 w1,w2,… ,wn 邻接的全部顶点(不包括已访问过的顶点),以此类推,直至所有顶点都被访问过为止。

7. 迪杰斯特拉算法的过程 该算法可以求得某一顶点到其余各顶点的最短路径。 算法思想:设有两个顶点集合 S 和 T,其中集合 S 中存放的是图中已找到最短路径的顶点,集合 T 中存放 的是图中的剩余顶点。 初始状态时,集合 S 中只包含源点 V0,然后不断从集合 T 中选取到顶点 V0 路径最短的顶点 Vu 并加入集 合 S 中。集合 S 每加入一个新的顶点 Vu,都要修改 V0 到集合 T 中各个顶点的最短路径的长度值。不断重 复这个过程,直至集合 T 中的顶点全部并入到 S 中为止。

8. 链表查找某个元素,平均的时间复杂度是多少? O(n) 链表是顺序存储,故(1+n)/2。

9. 图的存储方式 ① 邻接矩阵:是图的顺序存储结构,用两个数组分别存储数据元素(顶点)信息和数据元 素之间的关系(边/弧)的信息。图的邻接矩阵表示是唯一的,无向图的邻接矩阵是对称 的。 ② 邻接表:是图的链式存储结构,由单链表的表头形成的顶点表和单链表其余结点所形成 的边表两部分组成。 ③ 十字链表:有向图的另一种链式存储结构④ 邻接多重表:无向图的链式存储结构。

10. 图的深度遍历是否唯一

不一定是不唯一。我们可以取图中任一顶点进行深度遍历。

11. 图的相关概念

图:由结点的有穷集合 V 和边的集合 E 组成。 类别:有向图和无向图。 顶点的度:出度和入度。 有向完全图和无向完全图: 若有向图有 n 个顶点,则最多有 n(n-1)条边,则称为有向完全图; 若无向图有 n 个顶点,则最多有 n(n-1)/2 条边,则称为无向完全图。 路径:相邻顶点序偶所构成的序列。 简单路径:序列中的顶点和路径不重复出现的路径。 回路:路径中第一个顶点和最后一个顶点相同的路径。 连通: 无向图中,如果 Vi 到 Vj 有路径,则称这两个顶点连通。如果图中任意两个顶点之间都连通,则 称改图为连通图。 有向图中,如果 Vi 到 Vj 有路径,则称这两个顶点连通。如果图中每一对顶点 Vi 和 Vj,从 Vi 到 Vj 和 Vj 到 Vi 都有路径,则称改图为强连通图。

12. 最小生成树的概念

一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持 图联通的最少的边。如果在最小生成树中添加一条边,必定成一个环。 相关算法: ① 普里姆算法 ② 克鲁斯卡尔算法

N 个结点的最小生成树有几个结点,几条边:n 个结点,n-1 条边。

13. 平衡二叉树

平衡二叉树又称 AVL 树,是一种特殊的二叉排序树,其左右子树都是平衡二叉树,且左右子树的高度差的 绝对值不超过 1. 平衡因子: 左子树高度减去右子树高度的差。 平衡调整: 先找到失去平衡的最小子树,即以距离插入结点最近,且平衡因子绝对值大于 1 的结点最 为根节点的子树,分为 LL,LR,RL,RR 四中调节方式。

14. 二叉树的存储 ① 顺序存储结构:用一个数组来存储一颗二叉树,二叉树中的结点值按照编号依次存入一个一维数组中。 适用于完全二叉树,若用于一般的二叉树则会浪 费大量 存储空间。 ② 链式存储结构:二叉树中的每一个结点用一个链结点来存放。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值