zoukankan      html  css  js  c++  java
  • 2020 北京理工大学889 回忆

    该回忆版由(492030260)群内小伙伴讨论回忆出来的,我代为整理,除非搞到原题,任何考研机构不可能比我们这个更全,希望大家购买所谓真题的时候理性消费。 

    其中选择的第4题,第12题,填空的第1题,比较有歧义,不保证回忆和答案的正确性。其他题目或者答案如果有问题,或者你回想起了其他的题目或者题目细节,欢迎在评论区写出、群里@我或者直接私聊我。再次感谢!!!!

    转载请注明出处 :https://www.cnblogs.com/xuwangzihao/p/12081845.html

    选择题20个

    1,给你入栈顺序123,出栈顺序231,问你操作序列。(push、push、pop、push、pop、pop

    2,下列哪个说法错误:

      A 对称矩阵的存储只需要存主对角线和上三角或下三角

      B 对角矩阵不用存储零【对角线上可能有零】

      C 稀疏矩阵可以用三元组

      D 稀疏矩阵有分布规律,可以用三元组

    3,给了一循环队列A[0……30],rear指向队尾元素,front指向队头元素的前一个位置,存储了11个元素,当前front指向25,求rear指针位置。(5)

    4,有一个无向图,每个边值不同,问下列哪一个选项是错的。

      A 生成树不一定唯一

      BC很简单,不记得了。。。

      D 两节点的最短距离一定是最小生成树上的两节点最短距离

    5,一个外层循环n,内层循环2n的程序,问你时间复杂度。(O(n^2))(注意不要选O(2n^2),渐进复杂度省略常数)

      A O(2n)         B O(n)

      C O(2n^2)     D O(n^2)

    6,二维矩阵的压缩方式:(答案应该是十字链表和三元组,不要选散列和邻接表)

    7,请选出排序算法的启动时间最少的算法,所谓启动时间就是说选出第一个元素的最终位置所花的时间。

      A 归并排序    B 堆排序
      C 插入排序    D 快速排序

    8,下列哪个空间复杂度不是常数:

      A 归并排序    B 堆排序
      C 快速排序    D 置换-选择排序

    9,顺序表下列哪个操作平均复杂度与众不同。

      A 删除元素a     B 查找元素a
      C 求表长         D 在第i个元素后插入

    10,给你一个图,问你哪个dfs序是不可能的(简单题,没啥说的

    11,给你一个 [1..5, 1..5] 上三角矩阵,问你压缩成一维后(下标从零开始),在行优先的情况下,a33的下标。(9

    12,关于m阶b树性质,下列哪个错误:(每个节点最少有2个子树,注意根节点为叶子结点的情况)

      A 每个节点最少有2个子树

      B 每个节点最多m-1关键字

      C 叶节点都在同一层

      D 记录是有序的

    13,中序线索二叉树的后继不可能是:

      A 祖先   B 兄弟   C 右孩子的左子树   D 儿子

    14,问你抽象数据类型说法错误的是:(D 用户可以看外面,也能清楚看到内部算法过程

    15,给你一个序列,问你折半查找某个不存在的数字的比较次数。(简单题

    16,对于一个森林来说,以孩子兄弟表示法表示,那么对于森林中的叶子节点,在孩子兄弟表示法中应该是()

      A 没有左孩子                    B 没有右孩子
      C 有左孩子,没有右孩子     D 既没有左孩子也没有右孩子

    17,n个节点的正则(完全)二叉树,分支节点个数为?

      A n/2      B (n-1)/2      C (n+1)/2     D n

    18,给了四个序列问哪个不是折半查找的查找序列。(简单题,只要保证搜索范围在不断缩小就行,比如目标是12,你之前已经比较过10和14了,这时候序列出来个8,那明显就不是折半查找的查找序列了)

    19,给了四个序列问哪个既不是大根堆,也不是小根堆。(简单题,选项里有一个 83 82 84,83两个孩子一大一小,那肯定错了啊)

    填空题15个题,20个空

    1,给了一个hash函数和输入序列,问你某一个值在表中的key是什么,问你平均查找长度。(这题第一问简单,第二问。。。可能要把成功查找的平均值和不成功的平均值再求平均

    2,问你100个数字归并排序需要几趟(7

    3,给你前序中序求层次遍历。(简单题

    4,基数排序的步骤:(分配)和收集

    5,给你一个序列,问步长为3的一趟希尔排序后是什么样(简单题

    6,5层(不含叶子结点层)3阶B树结点最多 121 个,最少 31 个。

    7,在二叉搜索树中删除u,已知u的祖先是p,u只有左子树s。操作是:p->lc=s,s->parent=p;然后释放u的空间。

    8,给你一个avl的插入序列(10,9,15,12,11),问你它旋转后的树的层次遍历。(10,9,12,11,15

    9, 一个n个节点的完全二叉树只有一个叶子结点的点是第几个点。(n/2

    10,单链表中删除q的后继结点的操作(q->next=q->next->next

    11,给你一个hash函数x%7,和几个数,问你能和48映射在同一位置的数字是(62

    12,广义表((a),(((b)),c),(d)),求长度:3,深度:4,表头:(a),表尾((((b)),c),(d))

    13,森林的后序遍历是树的 中 序遍历

    14,给你一个序列(1,2,3,4,5),问你折半查找数字2所用的比较次数为2次。

    简答题4个

    1,给你中序和层次遍历,让你画出那个树,并写出前续和中序。

    简单题,没啥说的

    2,已知L是单向循环链表,长度大于4,p1p2为指向其中两个不同节点的指针,问你A程序的意思和复杂度。

     1 void A(L, p1, p2){
     2 
     3   B(p1,p2);
     4 
     5   B(p2,p1);
     6 
     7 }
     8 
     9 void B(LNode *s, LNode *e){
    10 
    11   LNode *p=s;
    12 
    13   while(p->next!=e)p=p->next;
    14 
    15   p->next = s;
    16 
    17 }
    简答题2题面代码

    A的功能是把循环链表L在p1和p1的前缀处切开、p2和p2的前缀处切开,分割成两个单向循环链表。复杂度是O(n)

    3,有两个小问:

      1,一个50个点,100条边的无向图,点信息20字节,边信息10字节,邻接信息4字节,n、m、type各8字节,用邻接矩阵表示,问你存储这个图要花多少字节。

      50*20+50*50*(10+4)+3*8

      2,问你邻接表存储的无向图求连通分量的复杂度分析。

      时间复杂度:O(n+e)。因为要DFS每一个节点,且每个边都访问一遍。

      空间复杂度:O(n)。因为要开染色标记的辅助数组,如果DFS是递归实现,还要用深度为n的系统栈。

    4,给你14个带权重的字母,设计一种三进制编码。

    构造三叉哈夫曼树,没啥好说的,唯一要注意的点是要加一个权重为0的空节点。因为:(n-1)%(m-1)=(14-1)(3-1)=1。我一开始忘加了,写完才发现不对,浪费了15分钟。

    算法题3个:

    1,现有一字符数组S,其中存储的是从a到z的小写字母。设计一个算法,对该字符数组进行重新排列,使得所有的字母‘a’都放在前面,其他字母放在a后面,请分析你设计的算法的时间复杂度。

    void MaxAFront(char S[],int n); 

    提供两种思路:

    1,用‘a’做轴,做一趟快排,把小于等于的放左,大于的放右

    2,两个指针pq,p指向0,q遍历,遇到一个a就交换pq指向的元素然后p++

    2,一个有表头节点的单链表l。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个节点。若查找成功,输出该节点的data值,并return 1,否则return 0.

    int KtoLast(LinkList L,int k)
    typedef struct LNode{
    int data;
    struct LNode *next;
    }LNode, *LinkList

    提供三种思路:

    1,两个指针pq,先让p走k步,然后pq一起走,如果p指向空,那么q就是倒数第k个元素。

    2,计算表长n,然后输出正向第n-k+1个元素

    3,递归,返回值是当前层深度,回溯的时候就可以判断是否为倒数第k个。

    这题要注意两个坑,

    一个是列表长度可能小于k,那就是无解。

    一个是不允许改变链表,也就是说不能用“反转、取正向第K个、再转回来”的算法。

    3,二叉树t中,每个节点都拥有一个权值(正整数),请设计一个递归算法,求T中所有叶子权值的最大值,假设函数定义如下。

    int MaxLeafValue(BiTree T)
    typedef struct BiTNode{
    int w;
    struct BiTNode *lchild,*rchild;
    }BiTNode.*BiTree

    int MaxLeafValue(BiTree T){

      if(!T) return 0;

      if(!T->lchild&&!T->rchild)  return T->w;

      return max(MaxLeafValue(T->lchild), MaxLeafValue(T->rchild));

    }

  • 相关阅读:
    若依问题解决(一)
    Java 将两个List转换为流合并List
    后端返回前端文本换行显示,只能在前端再转换
    Java Stream() 流根据对象属性去重
    vue 当前端传回后端,后端使用实体类接收数据显示报错
    js 中 getMonth() 获取的月份比现实少一个月
    vue连个数组对比
    JS链接跳转方法
    ElementUI--表格toggleRowSelection无法选中
    Linux 常用命令
  • 原文地址:https://www.cnblogs.com/xuwangzihao/p/12081845.html
Copyright © 2011-2022 走看看