-
何为连通图 强 连通图详解
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
前面介绍了《图存储结构》,本节继续讲解什么是连通图。 前面讲过,图中从一个顶点到达另一顶点,若存在至少一条路径,则称这两个顶点是连通着的。例如图 1 中,虽然 V1 和 V3 没有直接关联,但从 V1 到 V3 存在两条路径,分别是 V1-V2-V3 和 V1-V4-V3,因[详细]
-
什么是生成树 生成树 生成森林 解说
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
在学习连通图的基础上,本节学习什么是生成树,以及什么是生成森林。 对连通图进行遍历,过程中所经过的边和顶点的组合可看做是一棵普通树,通常称为生成树。 连通图中,由于任意两顶点之间可能含有多条通路,遍历连通图的方式有多种,往往一张连通图可能[详细]
-
图的顺序存储结构 包括C语言实现
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
使用图结构表示的数据元素之间虽然具有多对多的关系,但是同样可以采用顺序存储,也就是使用数组有效地存储图。 使用数组存储图时,需要使用两个数组,一个数组存放图中顶点本身的数据(一维数组),另外一个数组用于存储各顶点之间的关系(二维数组)。[详细]
-
图的邻接表存储结构细况
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
通常,图更多的是采用链表存储,具体的存储方法有 3 种,分别是邻接表、邻接多重表和十字链表。 在具体讲解邻接表存储图的实现方法之前,先普及一个邻接点的概念。在图中,如果两个点相互连通,即通过其中一个顶点,可直接找到另一个顶点,则称它们互为邻[详细]
-
图的十字链表存储构架
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
前面介绍了图的邻接表存储法,本节继续讲解图的另一种链式存储结构十字链表法。 与邻接表不同,十字链表法仅适用于存储有向图和有向网。不仅如此,十字链表法还改善了邻接表计算图中顶点入度的问题。 十字链表存储有向图(网)的方式与邻接表有一些相同,[详细]
-
图的邻接多层表存储结构
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
前面讲过,无向图的存储可以使用邻接表,但在实际使用时,如果想对图中某顶点进行实操(修改或删除),由于邻接表中存储该顶点的节点有两个,因此需要操作两个节点。 为了提高在无向图中操作顶点的效率,本节学习一种新的适用于存储无向图的方法邻接多重表[详细]
-
深度优先搜索 DFS 深搜 及广度优先搜索 BFS 广搜
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
深度优先搜索的过程类似于树的先序遍历,首先从例子中体会深度优先搜索。例如图 1 是一个无向图,采用深度优先算法遍历这个图的过程为: 首先任意找一个未被遍历过的顶点,例如从 V1 开始,由于 V1 率先访问过了,所以,需要标记 V1 的状态为访问过; 然后[详细]
-
深度优先生成树和广度优先生成树 解析版
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
前面已经给大家介绍了有关生成树和生成森林的有关知识,本节来解决对于给定的无向图,如何构建它们相对应的生成树或者生成森林。 其实在对无向图进行遍历的时候,遍历过程中所经历过的图中的顶点和边的组合,就是图的生成树或者生成森林。 具体实现的代码[详细]
-
重连通图与重连通分量
所属栏目:[编程] 日期:2022-07-08 来源:DaWei
在无向图中,如果任意两个顶点之间含有不止一条通路,这个图就被称为重连通图。在重连通图中,在删除某个顶点及该顶点相关的边后,图中各顶点之间的连通性也不会被破坏。 在一个无向图中,如果删除某个顶点及其相关联的边后,原来的图被分割为两个及以上的[详细]
-
串的定长顺序存储构架
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
我们知道,顺序存储结构(顺序表)的底层实现用的是数组,根据创建方式的不同,数组又可分为静态数组和动态数组,因此顺序存储结构的具体实现其实有两种方式。 通常所说的数组都指的是静态数组,如 str[10],静态数组的长度是固定的。与静态数组相对应的,[详细]
-
串的堆分配存储框架
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
串的堆分配存储,其具体实现方式是采用动态数组存储字符串。 通常,编程语言会将程序占有的内存空间分成多个不同的区域,程序包含的数据会被分门别类并存储到对应的区域。拿 C 语言来说,程序会将内存分为 4 个区域,分别为堆区、栈区、数据区和代码区,其[详细]
-
串的块链存储构造
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
串的块链存储,指的是使用链表结构存储字符串。 链表各节点存储数据个数的多少可参考以下几个因素: 串的长度和存储空间的大小:若串包含数据量很大,且链表申请的存储空间有限,此时应尽可能的让各节点存储更多的数据,提高空间的利用率(每多一个节点,[详细]
-
BF算法 串模式匹配算法 C语言解说
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
串的模式匹配算法,通俗地理解,是一种用来判断两个串之间是否具有主串与子串关系的算法。 主串与子串:如果串 A(如 shujujiegou)中包含有串 B(如 ju),则称串 A 为主串,串 B 为子串。主串与子串之间的关系可简单理解为一个串 包含 另一个串的关系。[详细]
-
什么叫做数组存储结构
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
前面学习数据结构的过程中,总是使用数组作为顺序表的底层实现,给我们一种 数据结构中,数组的作用就是实现顺序表 的错误认识。其实,数组的作用远不止于此。 本节将从数据结构的角度讲解数组存储结构。 本节所讲的数组,要将其视为一种存储结构,与平时[详细]
-
数组的排序存储 C语言版
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
数组作为一种线性存储结构,对存储的数据通常只做查找和修改操作,因此数组结构的实现使用的是顺序存储结构。 要知道,对数组中存储的数据做插入和删除操作,算法的效率是很差的。 通过以上内容,我们掌握了将多维数组存储在一维内存空间的方法。那么,后[详细]
-
矩阵 稀疏矩阵 压缩存储 3种方案
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
数据结构中,提供针对某些特殊矩阵的压缩存储结构。 矩阵中有两条对角线,其中的对角线称为主对角线,另一条从左下角到右上角的对角线为副对角线。对称矩阵指的是各数据元素沿主对角线对称的矩阵。 结合数据结构压缩存储的思想,我们可以使用一维数组存储[详细]
-
三元组顺序表 稀疏矩阵的三元组表示及 C语言 做成
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
本节介绍稀疏矩阵的三元组顺序表压缩存储方式。 通过《矩阵的压缩存储》一节我们知道,稀疏矩阵的压缩存储,至少需要存储以下信息: 矩阵中各非 0 元素的值,以及所在矩阵中的行标和列标; C 语言中,三元组需要用结构体实现,如下所示: //三元组结构体 t[详细]
-
行逻辑链接的顺序表 压缩存储稀疏矩阵 细说
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
前面学习了如何使用三元组顺序表存储稀疏矩阵,其实现过程就是将矩阵中各个非 0 元素的行标、列标和元素值以三元组的形式存储到一维数组中。通过研究实现代码你会发现,三元组顺序表每次提取指定元素都需要遍历整个数组,运行效率很低。 本节将学习另一种[详细]
-
十字链表法 十字链表压缩存储稀疏矩阵解析
所属栏目:[编程] 日期:2022-07-07 来源:DaWei
对于压缩存储稀疏矩阵,无论是使用三元组顺序表,还是使用行逻辑链接的顺序表,归根结底是使用数组存储稀疏矩阵。介于数组 不利于插入和删除数据 的特点,以上两种压缩存储方式都不适合解决类似 向矩阵中添加或删除非 0 元素 的问题。 例如,A 和 B 分别为[详细]
-
Python字符串对齐方法 ljust rjust 和center 细说
所属栏目:[编程] 日期:2022-07-06 来源:DaWei
Python str 提供了 3 种可用来进行文本对齐的方法,分别是 ljust()、rjust() 和 center() 方法,本节就来一一介绍它们的用法。 Python ljust()方法 ljust() 方法的功能是向指定字符串的右侧填充指定字符,从而达到左对齐文本的目的。 ljust() 方法的基本格[详细]
-
Python startswith 和endswith方式
所属栏目:[编程] 日期:2022-07-06 来源:DaWei
除了前面介绍的几个方法外,Python 字符串变量还可以使用 startswith() 和endswith() 方法。 startswith()方法 startswith() 方法用于检索字符串是否以指定字符串开头,如果是返回 True;反之返回 False。此方法的语法格式如下: str.startswith(sub[,star[详细]
-
Python字符串大小写转变 几种 函数及用法
所属栏目:[编程] 日期:2022-07-06 来源:DaWei
Python 中,为了方便对字符串中的字母进行大小写转换,字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。 Python title()方法 title() 方法用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写,转换完成后,此方法会返回转换[详细]
-
Python去除字符串中空格 删除指定字符 的几种方式
所属栏目:[编程] 日期:2022-07-06 来源:DaWei
用户输入数据时,很有可能会无意中输入多余的空格,或者在一些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。 这里的特殊字符,指的是制表符(t)、回车符(r)、换行符(n)等。 Python 中,字符串变量提供了[详细]
-
Python format 格式化输出方案详解
所属栏目:[编程] 日期:2022-07-06 来源:DaWei
前面章节介绍了如何使用 % 操作符对各种类型的数据进行格式化输出,这是早期 Python 提供的方法。自 Python 2.6 版本开始,字符串类型(str)提供了 format() 方法对字符串进行格式化,本节就来学习此方法。 format() 方法的语法格式如下: str.format(arg[详细]
-
Python encode 和decode方式 字符串编码转换
所属栏目:[编程] 日期:2022-07-06 来源:DaWei
前面章节在介绍 bytes 类型时,已经对 encode() 和 decode() 方法的使用做了简单的介绍,本节将对这 2 个方法做详细地说明。 我们知道,最早的字符串编码是 ASCII 编码,它仅仅对 10 个数字、26 个大小写英文字母以及一些特殊字符进行了编码。ASCII 码做多[详细]

浙公网安备 33038102330473号