在下列结论中,正确的是( )。
① 因链栈本身没有容量限制,故在用户内存空间的范围内不会出现栈满情况② 因顺序栈本身没有容量限制,故在用户内存空间的范围内不会出现栈满情况A. 只有①正确 B. 只有②正确C. ①②都正确 D. ①②都不正确【2013 年——江苏大学】【考查内容】栈的链式存储结构和顺序存储结构是否会在用户空间范围内出现栈满的情况。【解析】链栈本身是没有容量限制的,结点都是动态申请的。所以,在用户空间范围内,不会出现栈满的情况。顺序栈则不同,顺序栈其实就是用一维数组存储的堆栈,数组的大小表示了栈的容量,在用户空间范围内可能出现栈满的情况。【参考答案】A
中缀表达式就是常见的运算表达式,如(3+4)×5-6
前缀:算右->左 栈顶元素 op 次顶元素 求表达式:右->左
后缀:算左->右 次顶元素 op 栈顶元素 求表达式:左->右
A+(B*(C-D))/E
前:+A/*B-CDE
后:ABCD-*E/+
十字链表:有链接的编号链接。比如a(0)->b(1) 这样的话就有0 1 ^ ^这样的元素
连线要看后面的数字,有没有这个下标。第二个数一样就放在同一列。
稀疏矩阵一般的压缩存储方法有两种:三元组和十字链表
特殊稀疏矩阵
在一棵度为 4 的树 T 中,若有 20 个度为 4 的结点,10 个度为 3 的结点,1 个度为
2 的结点,10 个度为 1 的结点,则树 T 的叶结点个数是( )。A. 41 B. 82 C. 113 D. 122【2010 年统考——第 5 题】【考查内容】树的基本概念,树的结点计算方法。【解析】本题画图或者计算,都不太容易。我们可以这样来推理:这棵度为 4 的树 T 中,若有 20 个度为 4 的结点,10 个度为 3 的结点,1 个度为 2 的结点,10 个度为 1 的结点。所以,树的度数为20 × 4 + 10 × 3 + 1 × 2 + 10 × 1 = 122。因为根结点没有父结点,所以,所以,树中一共有结点 122+1=123 个。除去这 20+10+1+10=41 个结点,其他的 82 个结点是叶子结点。注意,这里不用再出去父结点了。因为父结点的度肯定不为零,即不是叶子结点。也就是说,父结点的度数一定是 1,2,3,4 当中的一个,已经在题目中所述的结点范围之内了。【参考答案】B
设高度为 h 的二叉树上,只有度为 0 和度为 2 的结点,则这一类二叉树中所包含的结
点个数至少是( )。A. h-1 B. h C. 2h-1 D. 2h
线索二叉树:将二叉树中序遍历之后,将空指针分别指向前一个数和后一个数,
对于只有一个叶子结点的二叉树,前序和后序遍历所得到的序列是一样的满足堆的定义。大(小)顶堆从任意结点出发到根结点(堆顶)的路径上的结点递增(减)有序。
二叉排序树的特点是中序遍历递增
已知一棵有 2011 个结点的树,其叶结点个数为 116,该树对应的二叉树中无右孩子的
结点个数是( )。A. 115 B. 116 C. 1895 D. 1896【2011 年统考——第 6 题】【考查内容】树转换成二叉树。【解析】我们可以设想这样一棵树:该树最后一层有 116 个叶子结点,其他的每层都只有一个结点。那么,除了最后一层,其他层总共有结点个数为 2011-116=1895。也就是说,这棵特殊的树共有 1896 层,除了最后一层,其他层每层都只有一个结点。那么,将这样的一棵树转换成二叉树,则除了最后一层的 116-1=115(最后一层最右边的结点无右孩子结点)个结点之外,其他的结点都没有右孩子。所以,树对应的二叉树中无右孩子的结点个数是 2011-115=1896。【参考答案】D哈夫曼树
注意:为了使得到的哈夫曼树的结构尽量唯一,通常规定生成的哈夫曼树中每个结点的左子树根结点的权小于等于右子树根结点的权。
树中一定没有度为 1 的结点
树中两个权值最小的结点一定是兄弟结点
树中任一非叶结点的权值一定不小于下一层任一结点的权值
前缀码: 设Q ={a1, a2, …, am}是一个0~1序列集合 . 如果Q中没有一个序列是另一个序列的前缀 , 则称Q为前缀码. 0 是00 的前缀,1是 11 的前缀,不符合前缀码要求
简单路径是指不存在回路的路径
AOE网:
计算:(1)从前向后,取大值:直接前驱结点的Ve(j)+到达边(指向顶点的边)的权值,有多个值的取较大者
(2)从后向前,取小值:直接后继结点的Vl(j) –发出边(从顶点发出的边)的权值,有多个值的取较小者;两个值相同的点就是关键路径
如果某项工程中,多个关键活动构成了两条或更多关键路径,此时并不是缩短任意关键活动的时间都能缩短整个工程时间,而是要缩短所有关键路径的公共关键活动的时间
djs单源最短路时间复杂度为 O(n2)。多源点最短路径是任意两个结点之间的最短路径,时间复杂度为 O(n3)
下列关于 AOE 网的叙述中,不正确的是( )。
A. 关键活动不按期完成就会影响整个工程的完成时间B. 任何一个关键活动提前完成,那么整个工程将会提前完成C. 所有的关键活动提前完成,那么整个工程将会提前完成D. 某些关键活动提前完成,那么整个工程将会提前完成【2015 年—北京邮电大学】【考查内容】AOE 网。【解析】AOE(Activity on Edge)网的边表示活动。关键活动是指关键路径上面的活动。关键路径是工程中代价最大的路径(如时间代价)。关键路径不按期完成,将会延长整个工程的时间。所以,A 答案正确。但是,关键路径可能不止一个,所以不是所有关键路径上的共同关键活动提前完成,可能不会使得整个工期的提前完成。所以,B 答案错误。D 答案同理。【参考答案】C折半查找判定树的深度为⌊????2??⌋ + 1
散列函数、装填因子和处理冲突的方法。其中,装填因子表示的是关键字的个数与哈希表表长的比值。一般情况下,装填因子越大,冲突的概率也越大
简单选择排序,比较次数与移动次数分别为:O(n*n), O(n)
希尔排序:
为实现快速排序算法,待排序序列宜采用的存储方式是( )。
A. 顺序存储 B. 散列存储 C. 链式存储 D. 索引存储【2011 年统考——第 10 题】【考查内容】快速排序的关键字存储结构。【解析】快速排序算法在排序的过程中,会从后往前查找比枢轴元素小的元素,也会从前往后查找比枢轴元素大的元素,最终使得枢轴元素大于其左边元素,小于其右边元素。散列存储、链式存储、索引存储,都不能适合作为快速排序的存储结构。与之相反,顺序存储结构更加方便从前往后和从后往前查找,能够很好的适用于快速排序。【参考答案】A大顶堆构建:
B树 B+树:根结点最多有m棵子树,所有叶结点都在同一层上,
各结点内关键字均升序或降序排列
B-数:
桶排序:1.分区间,2.把数放进去 3.将桶里面的数排序 4.将桶里面的数一次输出
基数排序:
相当于队列,将数依次放进去,然后依次取出来,从最开始一个数依次往后比较后面的数。
装填因子:a=n/m 其中n 为关键字个数,m为表长。 加载因子是表示Hsah表中元素的填满的程度.若:加载因子越大,填满的元素越多,好处是,空间利用率高了,但:冲突的机会加大了.反之,加载因子越小,填满的元素越少,好处是:冲突的机会减小了,但:空间浪费多了. 冲突的机会越大,则查找的成本越高.反之,查找的成本越小.因而,查找时间就越小. 产生了堆积现象,会使得平均查找长度增大
堆积现象:若散列函数不好、或装填因子a 过大,都会使堆积现象加剧。
用线性探测再散列方法:
说白了就是最简单的有冲突往后移一格。
2次平方再散列:
平均查找长度 ASL:每个数查找的次数加起来/总的数的数量
B树:若根节点不是终端节点,则根节点至少有两棵子树
除了根节点之外的非叶子节点至少有m/2(向上取整)棵子树,也就是至少含有(m/2)向上取整-1个关键字,最多有m-1个关键字,这里就是控制阶数,达到平衡的目的
所有的叶子节点都在同一个层次上面
插入的时候的分裂:n/2向上取整,剩下的分为左右节点:
删除的时候:
够借就旋转,不够借也旋转
旋转后可以留空值。。。。。。比如这样
B树+树的区别
B树两个关键字夹着一个分支
B+树中一个关键字对应一个分支
串成一个单链表,可以依次遍历底层叶子数据
在B树中:关键字最少时,应该是结点刚好能分裂的时候。
临接多重表:
注意前后节点的顺序问题,在当前节点b已经被遍历的时候,注意b相关的节点都要遍历到,依次往下,就像图中第一列中的一样,注意观察d点数据网往上的箭头。
连通分量 指的是 无向图 中的极大连通子图
强连通分量 指的是 有向图中 的极大连通子图
无向图:极大连通子图可以存在于无向图中,也可以存在于有向图中;
极小连通子图只存在于连通的无向图中,不存在于不连通的无向图和有向图中。
极小连通子图相当于极大连通子图的最小生成树,当新增一条边之后图中会出现环,着那样就称为最小连通子图。