![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构学习笔记
Ambitious°
编程初学者
展开
-
数据结构——最小生成树和最短路径
生成树由深度优先遍历得到的为深度优先生成树。由广度优先遍历得到的为广度优先生成树。一个连通图的生成树可能不唯一,由不同的遍历次序、从不同顶点出发进行遍历都会得到不同的生成树。对于非连通图,通过图的遍历,将得到的是生成森林。最小生成树生成树的代价: 设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。最小生成树: 在图G所有生成树中,代价最小的生成树称为最小生成...原创 2019-12-02 22:17:07 · 485 阅读 · 0 评论 -
数据结构——Kruskal算法
基本思想:(加边)1.设无向连通网为G=(V, E),令G的最小生成树为T=(U, TE),其初态为U=V,TE={ },2.然后,按照边的权值由小到大的顺序,考察G的边集E中的各条边。 2.1若被考察的边的两个顶点属于T的两个不同的连通分量,则将此边作为最小生成树的边加入到T中,同时把两个连通分量连接为一个连通分量; 2.2若被考察边的两个顶点属于同一个连通分量,则舍去此边,以免造成回路...原创 2019-12-02 22:15:47 · 479 阅读 · 0 评论 -
数据结构——Prim算法
基本思想:(加点)设G=(V, E)是具有n个顶点的连通网,T=(U, TE)是G的最小生成树,T的初始状态为U={u0}(u0∈V),TE={ },重复执行下述操作:在所有u∈U,v∈V-U的边中找一条代价最小的边(u, v)并入集合TE,同时v并入U,直至U=V。伪代码:算法:Prim输入:无向连通网G=(V,E)输出:最小生成树T=(U,TE)1. 初始化两个辅助数组lo...原创 2019-12-02 22:01:33 · 552 阅读 · 0 评论 -
数据结构——图
图的逻辑结构图的定义和基本术语一、图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。在线性表中,元素个数可以为零,称为空表;在树中,结点个数可以为零,称为空树;在图中,顶点个数不能为零,但可以没有边。无向图:若顶点vi和vj之间的边没有方向,则称这条边为无向边,表示为(vi,vj...原创 2019-12-02 21:27:36 · 213 阅读 · 0 评论 -
数据结构——线索二叉树和并查集
线索二叉树二叉树的遍历运算是将二叉树中结点按一定规律线性化的过程。当以二叉链表作为存储结构时,只能找到结点的左、右孩子信息,而不能直接得到结点在遍历序列中的前驱和后继信息。要得到这些信息可采用以下两种方法:1.将二叉树遍历一遍,在遍历过程中便可得到结点的前驱和后继,但这种动态访问浪费时间。2.充分利用二叉链表中的空链域, 将遍历过程中结点的前驱、 后继信息保存下来。线索链表:线索:将...原创 2019-12-02 20:48:54 · 196 阅读 · 0 评论 -
数据结构——森林和最优二叉树
森林的逻辑结构森林是m(m≥0)棵互不相交的树的集合。森林的前序遍历:前序遍历森林中的每一棵数。森林的后序遍历:后序遍历森林中的每一棵树。森林通常有这两种方式。树、森林与二叉树的转换1.树转换为二叉树①加线——树中所有相邻兄弟结点之间加一条线。②去线——对树中的每个结点,只保留它与第一个孩子结点之间的连线,删去它与其他孩子结点之间的连线。③层次调整——按照二叉树结点之间的关系...原创 2019-12-02 19:55:21 · 425 阅读 · 1 评论 -
数据结构——二叉树总结
二叉树的逻辑结构一、二叉树的定义二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点:注意:二叉树和树是两种不同的树结构。⑴ 每个结点最多有两棵子树;所以不存在度大于2的结点⑵ 二叉树是有序的,不能任意颠倒。如果某结点只有一颗子树,一定指明它是左子树还是右子树。特殊的二叉树一...原创 2019-11-25 23:00:50 · 396 阅读 · 0 评论 -
数据结构——树总结
树的逻辑结构树的定义:采用递归方法一、树的定义:在树中通常将数据元素成为结点。树:n(n≥0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:⑴ 有且仅有一个特定的称为根的结点。⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。二、树的基本术语:1、结点的度、...原创 2019-11-25 21:25:49 · 624 阅读 · 0 评论 -
数据结构——KMP算法
KMP算法主串不回溯。用next[j]表示T[j]对应的k值(0≤j<m),定义:当j=0时 next[j]=-1;当集合非空时 max{k|1≤k<j且T[0]···T[k-1]=T[j-k]···T[j-1]} ;当其他情况时 next[j]=0。next[j]的算法分析:k=next[j-1](由next[]的 定义可以知道:t0t1…tk-1= tj-k…tj-3tj-2)1...原创 2019-11-18 23:13:53 · 133 阅读 · 0 评论 -
数据结构——BF算法
BF算法的基本思想就是蛮力匹配。 从主串S的第一个字符开始和模式T的第一个字符进行比较。若相等,则继续比较两者的后续字符;否则,从主串S的第二个字符开始和模式T的第一个字符(回溯)进行比较。重复过程,知道S或者T中所有的字符比较完毕。 若T中的字符串全部比较完毕,则匹配成功,返回本趟匹配的开始位置;否则匹配失败,返回0。伪代码:1.在串S和串T中设比较的起始下标i和j;2. 循环直到...原创 2019-11-18 21:27:45 · 756 阅读 · 0 评论 -
数据结构——字符串和多维数组总结
字符串串的逻辑结构:串: 零个或多个字符组成的有限序列。串长度: 串中所包含的字符个数。空串: 长度为0的串,记为:“ ”。非空串通常记为: S=" s1 s2 …… sn "S是串名,双引号是定界符,双引号引起来的部分是串值 ,si(1≤i≤n)是一个任意字符。子串: 串中任意个连续的字符组成的子序列。主串: 包含子串的串。子串的位置: 子串的第一个字符在主串中的序号。顺序串...原创 2019-11-18 20:43:57 · 576 阅读 · 0 评论 -
数据结构——队列总结
用顺序和链式实现了线性表,这次要用顺序和链式实现队列了。队列:只允许在一端进行插入操作,而另一端进行删除操作的线性表。允许插入(入队、进队)的一端称为队尾,允许删除(出队)的一端称为队头。队列的操作特性:先进先出队列的顺序存储结构及实现顺序队列——队列的顺序存储结构假溢出:当元素被插入到数组中下标最大的位置上之后,队列的空间就用尽了,尽管此时数组的低端还有空闲空间。解决:循环队列:将...原创 2019-10-28 00:18:01 · 488 阅读 · 0 评论 -
数据结构——栈总结
用顺序和链式实现了线性表,这次要从顺序和链式实现栈了。栈:限定仅在表尾进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶,另一端称为栈底。操作特性:后进先出注意:栈只是对表插入和删除操作的位置进行了限制,并没有限定插入和删除操作进行的时间。栈的顺序存储结构及实现顺序栈——栈的顺序存储结构进栈:top加1出栈:top减1栈空空:top= -1栈满:top= MAX_SI...原创 2019-10-28 00:02:45 · 338 阅读 · 0 评论 -
数据结构——线性表总结
开学第六周了,数据结构第二章线性表也学完了,总结一下知识点吧。 这一章学习了线性表的逻辑结构、顺序存储结构及实现、链式存储结构及实现、顺序表和单链表的比较、线性表的其他存储方法、应用举例等。线性表的定义: 零个或多个具有相同类型的数据元素的有限序列。数据元素的个数定义为线性表的长度。长度等于0时称为空表。线性表的顺序存储结构——顺序表特点: 线性表的顺序存储是指用一组地址连续的存储单元...原创 2019-10-13 16:55:14 · 374 阅读 · 0 评论 -
数据结构——概论总结
数据结构的基本概念:数据结构(Data Structure): 相互之间存在一定关系的数据的集合。 是数据及其元素之间相互关系的表示。逻辑结构: 线性结构、树形结构、图结构、集合 数据元素之间一般存在某种特定的关系,这种关系称为数据的逻辑结构。物理结构(存储结构): 顺序结构、链式结构 数据结构在计算机内存中的表示形式。包括数据元素的表示和其关系的表示。抽象数据类型(Abs...原创 2019-09-22 21:20:54 · 141 阅读 · 0 评论