美文网首页程序员
考研数据结构复试题

考研数据结构复试题

作者: 是归人不是过客 | 来源:发表于2020-07-03 16:39 被阅读0次

1、 数组和链表的区别

从逻辑结构来看:

a) 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。

b) 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素

从内存存储来看:

a) (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小

b) 链表从堆中分配空间, 自由度大但是申请管理比较麻烦

从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。

从访问方式类看,数组在内存中是连续的存储,因此可以利用下标索引进行访问;链表是链式存储结构,在访问元素时候只能够通过线性方式由前到后顺序的访问,所以访问效率比数组要低。

2.排序算法有哪些?

插入排序:直接插入排序、折半排插入序、希尔排序

交换排序:冒泡排序、快速排序

选择排序:简单选择排序、堆排序

归并排序

基数排序

A)事件复杂度

时间复杂度来说:

(1)平方阶(O(n2))排序   各类简单排序:直接插入、直接选择和冒泡排序; (2)线性对数阶(O(nlog2n))排序   快速排序、堆排序和归并排序; (3)O(n1+§))排序,§是介于0和1之间的常数。

希尔排序 (4)线性阶(O(n))排序   基数排序,此外还有桶、箱排序。

稳定性:

稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序

不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序

对比.png

2、 邻接矩阵和邻接表

邻接矩阵表示法:在一个一维数组中存储所有的点,在一个二维数组中存储顶点之间的边的权值

邻接表表示法:图中顶点用一个一维数组存储,图中每个顶点vi的所有邻接点构成单链表

对比

1)在邻接矩阵表示中,无向图的邻接矩阵是对称的。矩阵中第 i 行或 第 i 列有效元素个数之和就是顶点的度。

在有向图中 第 i 行有效元素个数之和是顶点的出度,第 i 列有效元素个数之和是顶点的入度。

2)在邻接表的表示中,无向图的同一条边在邻接表中存储的两次。如果想要知道顶点的度,只需要求出所对应链表的结点个数即可。

有向图中每条边在邻接表中只出现一次,求顶点的出度只需要遍历所对应链表即可。求入度则需要遍历其他顶点的链表。

3)邻接矩阵与邻接表优缺点:

邻接矩阵的优点是可以快速判断两个顶点之间是否存在边,可以快速添加边或者删除边。而其缺点是如果顶点之间的边比较少,会比较浪费空间。因为是一个 n∗n 的矩阵。

而邻接表的优点是节省空间,只存储实际存在的边。其缺点是关注顶点的度时,就可能需要遍历一个链表。


data1.png

3、 简述快速排序过程

1)选择一个基准元素,通常选择第一个元素或者最后一个元素,

2)通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的元素值比基准值大。

3)此时基准元素在其排好序后的正确位置

4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。

4、 解决哈希冲突的方法

1) 线性探测法

2) 平方探测法

3) 伪随机序列法

4) 拉链法

5、KMP算法

在一个字符串中查找是否包含目标的匹配字符串。其主要思想是每趟比较过程让子串先后滑动一个合适的位置。当发生不匹配的情况时,不是右移一位,而是移动(当前匹配的长度– 当前匹配子串的部分匹配值)位。

6、介绍一下各种树:
a)二叉树:左右子树的度都不超过二
b)二叉排序树:在二叉树的基础上,左子树均小于根,根均小于右子树
c)满二叉树:深度为k且包含(2的k次幂)-1个结点的二叉树。
d)满二叉树:深度为k,有n个结点的二叉树,其中每个结点都与深度为k的满二叉树中编号从1到n的结点一一对应。
e)线索二叉树:设置两个标识来标记左右指针指的是左右孩子还是前驱后继节点
LTag 0:指向左孩子 1:指向前驱
RTag 0:指向右孩子 2:指向后继
f)平衡二叉树:左右子树的高度差的绝对值小于等于1(即:平衡因子只能得-1、0、1)
g)哈夫曼树:又称为最优树,是一类带权路径长度最短的树。权值大小排序。
补充:
二叉树的存储:顺序存储结构(满二叉树、完全二叉树)
链式存储结构(一般二叉树)
7、树的存储:
双亲表示法
孩子表示法
孩子兄弟表示法
8、树的遍历
先序中序后序三种。递归实现。

9、什么是数据结构?
数据结构是以某种特定的布局方式存储数据的容器,这种“布局方式”决定了数据结构对于某些操作是高效的,而对于其他操作则是低效的。首先我们需要理解各种数据结构,才能在处理实际问题时选取最合适的数据结构。

10、常见的数据结构:
a) 数组
b) 栈
c) 队列
d) 链表
e) 树
f) 图
g) 散列表(哈希表)

11、数据结构的栈和堆
A)栈是一种具有后进先出性质的线性表的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。

B)堆就是用数组实现的二叉树,所有它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。

https://blog.csdn.net/qq_26347051/article/details/79821063

https://blog.csdn.net/qq_41560183/article/details/82390337

https://wenku.baidu.com/view/250b0f5d0a4c2e3f5727a5e9856a561252d321d1.html 重要

https://www.jinchutou.com/p-87298282.html

https://blog.csdn.net/liupeng19970119/article/details/88316368

01.jpg

相关文章

  • 考研数据结构复试题

    1、 数组和链表的区别 从逻辑结构来看: a) 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情...

  • 数据结构

    数据结构java实现博客学习数据结构神器 图形化理解数据结构,深入浅出王道考研--专注计算机考研

  • 面试材料

    面试经验 面试题1 面试题2 面试题3 面试题4 面试题5 面试题6――数据结构 面试题7――网络 面试题8――汇...

  • Android 面试题(重点2)

    掘金官网Android面试题 Android 动画 Android 动画Android面试题 算法和数据结构 设计...

  • 江西财经大学金融考研真题

    2012年江西财经大学金融学考研试题(回忆版) 本试题由江西聚英考研提供 一、名词解释(10*3=30) 1、票据...

  • 面试准备——ArrayList、Linked原理与比较

    从一个面试题开始: 数组 像这种面试题,基本都是考察数据结构和算法的知识。所以我们需要先从数据结构开始说起在jav...

  • 互联网大厂offer收割之数组及相关面试题解决方法

    更多面试题请关注头条号、微信号: itworld123 数组是所有数据结构中最简单的数据结构了,很多复杂的数据结构...

  • 数据结构线性表考研真题

    解2 参考资料:《王道数据结构考研复习指导》

  • 2006

    2006年考研英语试题 Section I Use of English Directions: Read the...

  • 剑指offer阅读(一)

    数据结构 面试题二: 数组 数组是一种最简单的数据结构,占据一块连续的数据结构并按照顺序存储数据。创建数组时,我们...

网友评论

    本文标题:考研数据结构复试题

    本文链接:https://www.haomeiwen.com/subject/supfyhtx.html