随笔分类 -  数据结构(面向笔试)

包括考研题和一些期末考试题
摘要:一、假设序列由n个关键字不同的记录构成,要求不经排序而从中选出关键字从大到小顺序的前k(k<<n)个记录,试问如何进行才能使所作的关键字间比较次数达到最小? 答: 用堆排序。在建立一个含n个元素的堆时,进行关键字的比较的次数不超过4n,调整新建堆时的比较次数不超过2log2n次。 该算法实现的伪代码 阅读全文
posted @ 2020-08-25 10:31 LightAc 阅读(1311) 评论(0) 推荐(0)
摘要:一、假设二叉排序树以后继线索链表作存储结构,编写出该二叉排序树中所有大于a且小于b的关键字的算法。 答: 本实现要求输出二叉排序树中的所有大于a且小于b。由二叉排序树的相关知识我们很容易知道:用递归的方式进行遍历,遇到大于a且小于b的关键字时即输出。 该算法实现的伪代码如下: /* 函数名称:输出二 阅读全文
posted @ 2020-08-25 10:30 LightAc 阅读(511) 评论(0) 推荐(1)
摘要:一、试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构,且树中结点的关键字均不同。 答: 由分析可以知道,通过教材所学的知识我们很容易知道二叉排序树的特点。按照中序遍历的顺序,应当符合当前遍历到的节点值大于前一个遍历到的节点值,所以我们最终得到的中序遍历序列是一个有序序列, 阅读全文
posted @ 2020-08-25 10:28 LightAc 阅读(555) 评论(0) 推荐(0)
摘要:一、试编写一个算法,给有向无环图G中每个顶点赋以一个整数序号,并满足以下条件:若从顶点i至顶点j有一条弧,则应使i<j。 答: 分析题目,我们很容易知道本题应当采用拓扑排序的方法。我们先统计所有点的入度,然后把当前剩下的点中入度为0的点编号,把这个点删去,更新与它相邻的点的入度,直到重复所有点处理完 阅读全文
posted @ 2020-08-25 10:27 LightAc 阅读(602) 评论(0) 推荐(0)
摘要:一、同7.22题要求。试基于图的广度优先搜索策略写一算法。 答: 本题需要以邻接表的方式来实现BFS算法从而判断是否存在从一点到另一点的路径。由所学知识可以知道,实现BFS可以队列的方式。在这道题,使用队列的方式进行实现。 该算法实现的伪代码如下: /* 函数名称:给定图中,判断给定两点之间是否存在 阅读全文
posted @ 2020-08-25 10:26 LightAc 阅读(660) 评论(0) 推荐(0)
摘要:一、试基于图的深度优先搜索策略写一算法,判别以邻接表方式存储的有向图中是否存在由顶点vi到vj的路径(i≠j)。注意算法中涉及的图的基本操作必须在此存储结构上实现。 答: 本题需要以邻接表的方式来实现DFS算法从而判断是否存在从一点到另一点的路径。由所学知识可以知道,实现DFS方式的方式有两种,用栈 阅读全文
posted @ 2020-08-25 10:25 LightAc 阅读(630) 评论(0) 推荐(0)
摘要:一、编写算法判别给定二叉树是否为完全二叉树。 答: 判断一个树是不是完全二叉树,可以使用BFS算法进行实现。在层序遍历的时候,空结点一定位于最后面。如果中间存在空结点则表明不是完全二叉树。继续执行直至遍历完成。 该算法实现的伪代码如下: /* 函数名称:判断树是不是完全二叉树 函数传入:树的根节点指 阅读全文
posted @ 2020-08-25 10:24 LightAc 阅读(529) 评论(0) 推荐(0)
摘要:广义表是非线性结构 阅读全文
posted @ 2020-05-07 18:46 LightAc 阅读(325) 评论(0) 推荐(0)
摘要:一、证明:一棵满k叉树上的叶子节点数n0和非叶子节点数n1之间满足以下关系:n0=(k-1)n1+1 答: 设满k叉树的结点总数为n,则有n=n0+n1。再看k叉树的分支数,除了根节点以外其余结点都有一个分支进入,分支总数为n-1,由于这些分支是由度为k的结点射出的,所以分支总数又为kn1。所以kn 阅读全文
posted @ 2020-05-05 20:29 LightAc 阅读(838) 评论(0) 推荐(0)
摘要:一、试编写递归算法,输出广义表中所有原子项及其所在层次。 答: 分析题意,我们很容易知道我们首先根据广义表的tag标志判断该节点是否是原子项。如果是原子项,则直接输出其原子项和所在的层数。如果不是原子项则通过对表头结点和表尾结点进行递归然后实现对整个广义表的遍历过程。 该算法实现的伪代码如下: /* 阅读全文
posted @ 2020-05-05 20:22 LightAc 阅读(1147) 评论(0) 推荐(1)
摘要:一、已知顺序表L含有n个整数,试分别以函数形式写出下列运算的递归算法。(1)求表中的最大整数(2)求表中n个函数之和。 答: 通过分析题目,我们很容易知道我们首先需要找到递归的终止条件。然后通过调用递归函数进行查找。 对于问题(1)来说递归的终止条件便是k等于L.length-1的时候,此时我们已经 阅读全文
posted @ 2020-05-05 20:18 LightAc 阅读(1093) 评论(0) 推荐(0)
摘要:一、假设表达式由单字母变量和双目四则运算算符构成。试写一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰式。 答: 分析题目我们可以知道我们可以通过一个栈进行实现。首先,我们规定运算优先级:乘除法优先级大于加减法优先级。其中,对于同一运算符号,前面出现符号优先级大于后面出现的优先级。我们构建 阅读全文
posted @ 2020-05-05 20:04 LightAc 阅读(1374) 评论(0) 推荐(0)
摘要:假设以S和X分别表示入栈和出栈的操作,则初态和终态均为栈空的入栈和出栈操作序列可以表示为仅由S和X组成的序列。称可以操作的序列为合法序列(例如,SXSX为合法序列,SXXS为非法序列)。试给出区分给定序列为合法序列或非法序列的一般准则,并证明,两个不同的合法(栈操作)序列(对同一输入序列)不可能得到 阅读全文
posted @ 2020-05-05 20:00 LightAc 阅读(1348) 评论(0) 推荐(0)
摘要:一、已知线性表中元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素)同时释放被删结点空间,并分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同)。 答: 本题对 阅读全文
posted @ 2020-05-05 19:18 LightAc 阅读(2312) 评论(1) 推荐(0)
摘要:一、设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。 答: 分析题目可知,我们需要先查到x需要在顺序表va中插入的位置。假设我们插入在顺序表中的位置为va.elem[i+1]。这里我们需要满足x的值大于等于va.elem[i]且小于va.elem[i+ 阅读全文
posted @ 2020-05-05 19:06 LightAc 阅读(1545) 评论(0) 推荐(0)
摘要:一、设有两个多项式形如 m = a0 + a1x + a2x2 + a3x3 +......anxn,设计算法计算两个多项式的和,输出和多项式。(BB平台版本)多项式求和,给出你的方法,并分析效率和原因?f(n) = a0 + a1x + a2x2 + a3x3 +......anxn。(PPT版本 阅读全文
posted @ 2020-05-05 18:56 LightAc 阅读(762) 评论(0) 推荐(1)

返回顶端