数据结构/算法(algorithm)
文章平均质量分 95
数据结构/算法(algorithm)相关博文
小枫学IT
个人学习爱好者,多次参加多种比赛,获得不少奖励。爱好:分享、学习、编程、运动、听歌、玩转Linux。
展开
-
二叉树详解及二叉树的遍历(递归与非递归C++算法实现)
二叉树详解及二叉树的遍历(递归与非递归C++算法实现)二叉树简介树(Tree)是一种由多个节点组成的有限集合T,有且仅有一个节点称为根(root),其余结点分为m(大于等于0)个互不相交的有限集合T1,T2,T3…;每个集合本身又是棵树,被称为这个根的子树。在树的定义中规定了树含有结点数必须大于0,这表明空集不可以称为树;他又规定结点可以为1,该结点就是根节点。节点、根节点、父节点、子节点、兄弟节点② 一棵树可以没有任何节点,成为空树③ 一棵树可以只有1个节点,也就是只有根节点④ 子树、左子原创 2022-01-06 18:48:35 · 1634 阅读 · 0 评论 -
深度优先搜索(DFS)与广度优先搜索(BFS)算法详解
深度优先搜索(DFS)与广度优先搜索(BFS)详解1.广度优先搜索算法1.1.前言和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图中所有顶点进行访问,且仅访问一次。但是图的遍历相对树而言要更为复杂。因为图中的任意顶点都可能与其他顶点相邻,所以在图的遍历中必须记录已被访问的顶点,避免重复访问。根据搜索路径的不同,我们可以将遍历图的方法分为两种:广度优先搜索和深度优先搜索。1.2.图及图的遍历概念:线性表和树两类数据结构,线性表中的元素是“一对一”的关系,树中的元素是“一对多”的原创 2021-10-02 23:26:46 · 6978 阅读 · 3 评论 -
图的基本概念、存储及基本操作(邻接矩阵法与邻接表法)
图的基本概念、存储及基本操作1. 图的基本概念1.1 图的定义图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G (V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。图的定义与线性表定义的对比:线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex)。线性表中可以没有数据元素,称为空表。树中可以没有结点,叫做空树。但是在图结构中,不允许没有顶点。在定义中,若V是顶点的集合,则强调了顶点集合V有穷非空。原创 2021-09-30 22:25:12 · 1988 阅读 · 4 评论 -
串的模式匹配算法-暴力、KMP算法详解
串的模式匹配算法-KMP算法简介KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。简单的模式匹配算法(暴力匹配算法)假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,如何查找呢?原创 2021-09-22 23:22:54 · 800 阅读 · 0 评论 -
C++ STL容器之Vector详解
C++ STL容器之Vector详解Vector简介vector数据结构和数组非常相似,也称为单端数组。vector与普通数组区别: 不同之处在于数组是静态空间,而vector可以动态扩展动态扩展: 并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector容器的迭代器是支持随机访问的迭代器Vector用法vector存放内置数据类型容器: vector算法: for_each迭代器: vector::iterator构造函数vector原创 2021-04-14 20:17:28 · 333 阅读 · 0 评论