数据结构之后有可能会有上机考试,基本考点不会超出课本范围,整理一拨儿方便日后复习~~
数据结构类型:逻辑结构,存储结构,对数据的运算
一.线性表
核心知识点:
- 线性表逻辑结构特性:数据元素之间存在线性关系,计算机中表示此结构的存储结构是顺序存储结构(顺序表)和链式存储结构(链表)
- 顺序表:元素存储先后位置反映出其逻辑上的线性关系,借助数组来表示。
- 链表:依靠指针反应线性逻辑关系(与随机存储结构对比);单链,循环链表,双向链表
- 熟练掌握链表的查询,插入和删除算法,可设计出常用算法(上图最右列)
顺序表和链表的对比见下图:
二.栈,列表
线性表的推广最重要的就是堆栈和队列,两者的主要算法如下:
核心考点:
- 栈:顺序存储对应顺序栈,链式存储对应链栈
- 队列:顺序存储对应循环队列,链式存储对应链式队列和双端队列
- 需要熟练掌握查询,删除和插入算法,以及基本应用(表中最右列)
三. 查找和串
关键字,平均查找长度ASL,哨兵机制(写代码的时候了解到的,作为课外拓展)
查找的一些核心知识点:
散列表的相关知识点:
串的相关算法及应用:
四. 排序
排序放在哪里都是核心,面试官巨喜欢考这玩意
主要关注各种复杂度的计算以及不同算法的特性和适用性、
分为内部排序和外部排序两大类:
下图为内部排序相关知识点:
外部排序:
五. 树
树:递归,表示具有层次结构的数据
一些性质:
- 树中结点数 = 所有节点的度数+1
- 度为m的树中第i层上至多有m^(i-1)个结点
- 高度为h的m叉树至多有(m^h-1)/(m-1)个结点
- 具有n个结点的m叉树的最小高度为[logm(n*(m-1)+1)]
计算:总结点数 = 总分支数 + 1
二叉树:有序树
特例:满二叉树,完全二叉树,二叉排序树,平衡二叉树
性质:
- n0 = n2 + 1
- k层上至多2^(k-1)个结点
- 高度为h的二叉树至多2^h-1个结点
- 完全二叉树:
- i偶,双亲结点i/2,i为左子节点;i奇,双亲结点(I-1)/2,i为右子节点
- 2i<=n,i的左子节点2i,否则无
- 2i+1<=n,i的右子节点2i+1,否则无
- i所在层次深度为 log2(i)+1
- 高度log2(n+1)或log2(n)+1
- 树 >>二叉树:左孩子右兄弟
- 森林 >> 二叉树:右子树
- 二叉树转换为 树/森林 唯一
六.图
图分为有向图和无向图,分别需要注意一下连通性的相关概念
基本的存储结构如下:
七. 数组和广义表
这俩是线性表的推广,基本没什么难的地方,放着看看就行
数组,广义表: