导航菜单
首页 >  数据结构概述是公务员考试么  > 【数据结构】知识点总复习

【数据结构】知识点总复习

第一章 绪论

本章重点:数据结构相关名词术语的含义。难点:时间复杂度的估算。

数据:是客观事物的符号表示。能被输入到计算机中被程序处理的符号的总称。 数据元素:也称顶点,结点或记录。数据的基本单位。 数据项:最小单位。 在这里插入图片描述 数据对象:性质相同的数据元素集合。 数据结构:带结构的相同性质数据元素集合。结构是一种或多种关系。

以上不知道怎么背,随便过过吧。

逻辑结构=数据元素+关系。 四类基本结构:

线性结构:一对一,如线性表,栈和队列,字符串,数组,广义表树结构:一对多图/网状结构:多对多集合结构。

后三个是非线性结构。(即四类中除了线性结构的)

在这里插入图片描述

两种存储结构:顺序存储(数组),链式存储(结构体和指针)。 差别: 顺序存储:相邻位置表示元素逻辑关系。 链式存储:指针信息表示元素逻辑关系。

算法: 五特性:有穷,确定,可行,输入,输出。 优劣标准:正确性,可读性,健壮性,高效性。

时间复杂度:一般是最深层循环内的语句频度。

两个没什么用的表:(?) 在这里插入图片描述

在这里插入图片描述

第二章 线性表

重难点:顺序表和链表。

概念:非空的线性表或线性结构是一个有限数据元素的有序集合。 特点:存在唯一一个第一个,最后一个数据元素;每个数据元素只有一个前驱(除第一个)和后继(除最后一个)。 存储:连续地址。是随机存储结构。

线性表 线性表的一些操作: GetElem: i是位置。注意特判范围。第1个存在0号位,故取值要i-1;

if(i=L.length) return ERROR;e=L.elem[i-1];

LocateElem:存在就返回位序,不存在就返回0; 地址从0开始,位序从1开始。故return i+1;

for(int i=0;i左->右 在这里插入图片描述

中序遍历:左->根->右 树上的结点都掉下来了 在这里插入图片描述

后序遍历:左->右->根 在这里插入图片描述

重要结论 若二叉树中的各结点的值均不同,则任意一颗二叉树的先、中、后序序列是唯一的。 先+中 或 后+中 可以唯一确定二叉树。 在这里插入图片描述

哈夫曼树 最优树,一类带权路径长度的最短树。

从这里学习WPL的计算方法:权值*路径长度(或者说这一层的层数) 之和。 易得:大的要近,小的要远,这样WPL就会最小。 在这里插入图片描述 一个哈夫曼树的生成: W={5,6,2,7,9}; 先排序:W={2,5,6,7,9}; W={6,7,7,9}; W={7,13,9}; 在这里插入图片描述 编码的两种形式 等长:易于译码。但长度长。 不等长:不易于译码,但长度短。

哈夫曼树是不等长的二进制编码,也是最优前缀编码。

如: W={43,14,29,14}; 左0右1: 在这里插入图片描述 哈夫曼编码树中,若叶子结点个数为n,则总结点为2n-1。

第六章 图

重点:图的两种存储结构和构造算法,不同存储结构的特点和使用场合。 图的两种遍历算法:DFS,BFS。

图分为有向图和无向图。 有向完全图:n(n-1) 无向完全图:n(n-1)/2 稀疏图:边的个数小于nlog2n; 度:出度+入度(有向图); 简单路径:序列中顶点不重复出现的路径。 简单回路:除第一个和最后一个相同,其他不重复。 连通图:任意两个顶点之间联通。

强连通图:有向图中任意两个顶点之间都存在一条有向路径。 否则,它的各个极大强连通子图称为它的强连通分量。

在这里插入图片描述 邻接矩阵 无向图的邻接矩阵为对称矩阵; 其实就是在有边的地方放1: 在这里插入图片描述 特点:

无向图的邻接矩阵对称,可压缩存储。这样,n个顶点的无向图需要的存储空间为n(n+1)/2;便于计算各个顶点的度。顶点i的度为第i行元素为1的个数。

有向图的邻接矩阵:也是有边的地方1 在这里插入图片描述 特点:

n个顶点需要存储空间为n^2;便于计算各顶点的度:第i行1的个数是i的出度;列——入度。

网的邻接矩阵 有边就放权值,否则为无穷大。 在这里插入图片描述

邻接矩阵的缺点

不便于增删结点不便于统计边的数目,要扫描整个矩阵,时间复杂度为O(n^2)对稀疏图很浪费空间

邻接表 连接的是出度,一般(地址)从小到大。

无向图: 在这里插入图片描述 特点:

无向图中,每条边在邻接表中出现2次空间复杂度O(n+2e),若是稀疏图,省空间不唯一,因为链入顺序任意i的度为第i单链表中的结点数

有向图: 在这里插入图片描述 特点:

有向图中,一条弧在邻接表只出现一次;空间复杂度O(n+e)i的度为第i单链表中的结点数

逆邻接表 连的是入度。 在这里插入图片描述 画网络

地址权值下一个指针

在这里插入图片描述 邻接表特点

便于增删便于统计边的数目,扫描整个表即可,时间复杂度O(n+e)不便于判断顶点之间是否有边不便于计算各个顶点的度通常,稠密图——邻接矩阵;稀疏图——邻接表

图的遍历:DFS和BFS

DFS: 访问顶点,若它的邻接点未被访问,则从它出发进行深搜: 在这里插入图片描述

求DFS: 别拉太下,答案要出来啦! 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 效率分析: 邻接矩阵O(n^2);适合稠密图。 邻接表O(n+e);稀疏图。

BFS: 用队列实现的一层层的,广度优先搜索。 从V0出发,依次访问V0的所有未被访问的邻接点,之后按它们被访问的先后次序访问它们的邻接点。 在这里插入图片描述 例题: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 注意这里67都是3后的!

在这里插入图片描述 14325

效率分析: 邻接矩阵O(n^2); 邻接表O(n+e);

DFS VS BFS

空间复杂度相同,O(n);时间复杂度与存储结构(邻接矩阵/邻接表)有关,与路径无关。

最小生成树

prim算法: 取图中任意一个顶点作为生成树的根,之后往生成树上添加新顶点w。在添加的顶点w和已经在生成树上的顶点v之间必定存在一条边,且该边的权值在所有连通vw的边中最小。 称为加点法。

克鲁斯卡尔算法: 为了使生成树上的边的权值之和达到最小,则应使生成树中的每一条边的权值尽可能地小。 从最小的边开始。给边排序,从小到大,找每一个没放入的点存在的最短边放入即可。 如:

在这里插入图片描述 两种算法的比较: 在这里插入图片描述 记法:克鲁斯卡尔是后学的,所以肯定时间更快…

最短路径:迪杰斯特拉 按照各条最短路径长度递增的次序产生最短路径。

图解 所以一开始的点是随便选的(源点),算出的路径是目标点到源点的距离 时间复杂度是O(n^2);

第七章 查找

重难点:

顺序表或有序表表示静态查找表时的查找方法、二叉排序树的查找方法。二叉排序树的查找方法、散列表的查找方法各种表示方法的适用点和适用场合。

查找表:由同一类型的记录构成的集合。

静态查找表:查询或检索动态查找表:查询、检索、插入或删除

关键字:用以标识一个记录。可识别唯一记录的是主关键字。 如身份证号是主关键字,姓名是次关键字。

线性表的查找

顺序查找折半查找

顺序查找:从头找

int Search(int a[],int e){for(int i=1;i

相关推荐: