复试专业课记录--数据结构1

  1. 数据结构的逻辑结构、物理结构和算法特性
    数据结构的逻辑结构、物理结构和算法特性

  2. 数组和链表的区别
    从逻辑结构看,数组必须实现于固定长度,即数组的大小一旦定义就不能改变;链表动态进行存储分配,数据可以动态增减,且可以方便的插入删除
    从内存存储看,数组从栈中分配空间;链表从堆中分配空间。
    从访问方式看,数组在内存中是连续的存储,可以利用下标索引进行访问;链表是链式存储结构,访问元素时只能通过线性方式访问

    线性表的链式存储性能分析
    (1) 查找:由于查找需通过指针从第一个结点开始查找,因此,最好情况时间复杂度为O(1),最坏情况事件复杂度为O(n)
    (2) 删除、插入:单链表的插入和删除主要由两部分组成:第一部分是遍历查询第i个元素;第二部分就是插入和删除元素

    从整个算法来说,我们很容易推导出:它们的时间复杂度都是O(n)。如果在我们不知道第i个元素的指针位置,单链表数据结构在插入和删除操作上,与线性表的顺序存储之间是没有太大的优势。但是如果我们希望从第i个位置,插入10个元素,对于顺序存储结构意味着,每一次插入都需要移动n-i个元素,每次都是O(n)。而对于单链表,我们只需要在第一次找到第i个位置的指针,此时为O(n),接下来只是简单地通过赋值移动指针而已,时间复杂度都是O(1)。
    适用范围:插入或删除越频繁的操作,单链表的效率优势就越明显。

  3. 头指针与头节点的区别
    头指针:指向第一个节点存储位置的指针,标识作用。无论链表是否为空,头指针均不为空。
    头节点:第一个元素节点之前,方便在第一个元素节点前进行插入删除。不是必要元素。

  4. 数据结构的逻辑结构
    线性结构: 一对一
    树形结构: 一对多
    图状结构: 多对多
    集合: 除了同属于一种类型外,无其他关系

  5. 邻接矩阵和邻接表
    邻接矩阵:无向图的邻接矩阵的对称的,第i行或者第i列的有效元素个数之和就是顶点i的度;有向图的邻接矩阵,第i行有效元素个数之和是顶点i的出度,第i列有效元素个数之和是顶点i的入度。
    邻接表:无向图的同一条边在邻接表中存储两次。顶点的度为所对应链表的节点个数;有向图的每条边在邻接表中存储一次,求顶点的出度遍历所对应的链表即可,顶点的入度需要遍历其他顶点的链表。
    邻接矩阵与邻接表对比:
    邻接矩阵可以快速判断两个顶点之间是否存在边,快速加边删边;但是相对浪费空间
    邻接表节省空间;但是当关注顶点的度时,需要遍历一个链表。

  6. 单链表与双链表
    单链表只有一个指针next,单链表只能向后遍历。双链表有prev指针,指向前一个节点地址,next指针,指向后一个结点地址。

  7. 栈和队列
    (1)都是线性结构;(2)插入操作都在表尾进行;(3)插入和删除时间复杂度都是O(1),空间复杂度相同;(4)都可以通过顺序结构和链表实现
    (1)删除元素位置不同,栈在表尾进行,队列在表头进行;(2)顺序栈能实现多栈空间共享,顺序队列不能

  8. 树与二叉树
    二叉树的特点:(1)非空二叉树只有一个根节点;(2)每一个结点最多有两棵子树,左子树,右子树,即有顺序。
    满二叉树,除最后一层外,每一层所有节点有两个子节点
    完全二叉树,除最后一层外,每一层结点数均达到最大值,在最后一层上只缺少右边的若干结点。


  9. 图由顶点集V(G)和边集E(G)组成,记为G=(V,E),E(G)是边的有限集合,边是顶点的无序对或有序对。
    对有向图,E(G)是有向边(弧)的有限集合,弧是顶点的有序对
    对无向图,E(G)是边的有限集合,边是顶点的无序对

  10. DFS
    (1)访问起始结点v
    (2)若v的第1个邻接点没访问过,访问此邻接点
    (3)若当前邻接点已访问过,访问v的第2个邻接点重新遍历

  11. BFS
    (1)访问起始结点v之后,依次访问v的邻接点
    (2)再依次(顺序)访问这些点(下一层)中未被访问过的邻接点
    (3)直到所有顶点都被访问过为止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值