-
图的邻接表存储结构细况
所属栏目:[语言] 日期:2022-07-07 热度:162
通常,图更多的是采用链表存储,具体的存储方法有 3 种,分别是邻接表、邻接多重表和十字链表。 在具体讲解邻接表存储图的实现方法之前,先普及一个邻接点的概念。在图中,如果两个点相互连通,即通过其中一个顶点,可直接找到另一个顶点,则称它们互为邻[详细]
-
图的顺序存储结构 包括C语言实现
所属栏目:[语言] 日期:2022-07-07 热度:97
使用图结构表示的数据元素之间虽然具有多对多的关系,但是同样可以采用顺序存储,也就是使用数组有效地存储图。 使用数组存储图时,需要使用两个数组,一个数组存放图中顶点本身的数据(一维数组),另外一个数组用于存储各顶点之间的关系(二维数组)。[详细]
-
什么是生成树 生成树 生成森林 解说
所属栏目:[语言] 日期:2022-07-07 热度:165
在学习连通图的基础上,本节学习什么是生成树,以及什么是生成森林。 对连通图进行遍历,过程中所经过的边和顶点的组合可看做是一棵普通树,通常称为生成树。 连通图中,由于任意两顶点之间可能含有多条通路,遍历连通图的方式有多种,往往一张连通图可能[详细]
-
数据结构的图存储框架
所属栏目:[语言] 日期:2022-07-07 热度:146
我们知道,数据之间的关系有 3 种,分别是 一对一、一对多 和 多对多,前两种关系的数据可分别用线性表和树结构存储,本节学习存储具有多对多逻辑关系数据的结构图存储结构。 图存储结构基本常识 弧头和弧尾 有向图中,无箭头一端的顶点通常被称为初始点或[详细]
-
数组的排序存储 C语言版
所属栏目:[语言] 日期:2022-07-07 热度:80
数组作为一种线性存储结构,对存储的数据通常只做查找和修改操作,因此数组结构的实现使用的是顺序存储结构。 要知道,对数组中存储的数据做插入和删除操作,算法的效率是很差的。 通过以上内容,我们掌握了将多维数组存储在一维内存空间的方法。那么,后[详细]
-
什么叫做数组存储结构
所属栏目:[语言] 日期:2022-07-07 热度:174
前面学习数据结构的过程中,总是使用数组作为顺序表的底层实现,给我们一种 数据结构中,数组的作用就是实现顺序表 的错误认识。其实,数组的作用远不止于此。 本节将从数据结构的角度讲解数组存储结构。 本节所讲的数组,要将其视为一种存储结构,与平时[详细]
-
BF算法 串模式匹配算法 C语言解说
所属栏目:[语言] 日期:2022-07-07 热度:160
串的模式匹配算法,通俗地理解,是一种用来判断两个串之间是否具有主串与子串关系的算法。 主串与子串:如果串 A(如 shujujiegou)中包含有串 B(如 ju),则称串 A 为主串,串 B 为子串。主串与子串之间的关系可简单理解为一个串 包含 另一个串的关系。[详细]
-
矩阵 稀疏矩阵 压缩存储 3种方案
所属栏目:[语言] 日期:2022-07-07 热度:135
数据结构中,提供针对某些特殊矩阵的压缩存储结构。 矩阵中有两条对角线,其中的对角线称为主对角线,另一条从左下角到右上角的对角线为副对角线。对称矩阵指的是各数据元素沿主对角线对称的矩阵。 结合数据结构压缩存储的思想,我们可以使用一维数组存储[详细]
-
三元组顺序表 稀疏矩阵的三元组表示及 C语言 做成
所属栏目:[语言] 日期:2022-07-07 热度:95
本节介绍稀疏矩阵的三元组顺序表压缩存储方式。 通过《矩阵的压缩存储》一节我们知道,稀疏矩阵的压缩存储,至少需要存储以下信息: 矩阵中各非 0 元素的值,以及所在矩阵中的行标和列标; C 语言中,三元组需要用结构体实现,如下所示: //三元组结构体 t[详细]
-
行逻辑链接的顺序表 压缩存储稀疏矩阵 细说
所属栏目:[语言] 日期:2022-07-07 热度:86
前面学习了如何使用三元组顺序表存储稀疏矩阵,其实现过程就是将矩阵中各个非 0 元素的行标、列标和元素值以三元组的形式存储到一维数组中。通过研究实现代码你会发现,三元组顺序表每次提取指定元素都需要遍历整个数组,运行效率很低。 本节将学习另一种[详细]
-
十字链表法 十字链表压缩存储稀疏矩阵解析
所属栏目:[语言] 日期:2022-07-07 热度:123
对于压缩存储稀疏矩阵,无论是使用三元组顺序表,还是使用行逻辑链接的顺序表,归根结底是使用数组存储稀疏矩阵。介于数组 不利于插入和删除数据 的特点,以上两种压缩存储方式都不适合解决类似 向矩阵中添加或删除非 0 元素 的问题。 例如,A 和 B 分别为[详细]
-
串的定长顺序存储构架
所属栏目:[语言] 日期:2022-07-07 热度:192
我们知道,顺序存储结构(顺序表)的底层实现用的是数组,根据创建方式的不同,数组又可分为静态数组和动态数组,因此顺序存储结构的具体实现其实有两种方式。 通常所说的数组都指的是静态数组,如 str[10],静态数组的长度是固定的。与静态数组相对应的,[详细]
-
串的堆分配存储框架
所属栏目:[语言] 日期:2022-07-07 热度:101
串的堆分配存储,其具体实现方式是采用动态数组存储字符串。 通常,编程语言会将程序占有的内存空间分成多个不同的区域,程序包含的数据会被分门别类并存储到对应的区域。拿 C 语言来说,程序会将内存分为 4 个区域,分别为堆区、栈区、数据区和代码区,其[详细]
-
串的块链存储构造
所属栏目:[语言] 日期:2022-07-07 热度:130
串的块链存储,指的是使用链表结构存储字符串。 链表各节点存储数据个数的多少可参考以下几个因素: 串的长度和存储空间的大小:若串包含数据量很大,且链表申请的存储空间有限,此时应尽可能的让各节点存储更多的数据,提高空间的利用率(每多一个节点,[详细]
-
Python lambda表达式 匿名函数 和用法
所属栏目:[语言] 日期:2022-07-07 热度:74
对于定义一个简单的函数,Python 还提供了另外一种方法,即使用本节介绍的 lambda 表达式。 lambda 表达式,又称匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。 lambda[详细]
-
Python eval 和exec 函数解说
所属栏目:[语言] 日期:2022-07-07 热度:95
eval() 和 exec() 函数都属于 Python 的内置函数,由于这两个函数在功能和用法方面都有相似之处,所以将它们放到一节进行介绍。 eval() 和 exec() 函数的功能是相似的,都可以执行一个字符串形式的 Python 代码(代码以字符串的形式提供),相当于一个 Pyt[详细]
-
何为面向对象 Python面向对象 一切皆对象
所属栏目:[语言] 日期:2022-07-07 热度:95
读者肯定听过 Python 中一切皆对象的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面向对象的含义。 面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵[详细]
-
Python class 定义类 进门必读
所属栏目:[语言] 日期:2022-07-07 热度:197
前面章节中已经提到,类仅仅充当图纸的作用,本身并不能直接拿来用,而只有根据图纸造出的实际物品(对象)才能直接使用。因此,Python 程序中类的使用顺序是这样的: 创建(定义)类,也就是制作图纸的过程; 创建类的实例对象(根据图纸造出实际的物品)[详细]
-
Python __init__ 类构造方式
所属栏目:[语言] 日期:2022-07-07 热度:126
在创建类时,我们可以手动添加一个 __init__() 方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。 构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python 解释器都会自动调用它。Python 类中,手动添加构造方法的语法格式如下[详细]
-
Python类对象的创建和运用
所属栏目:[语言] 日期:2022-07-07 热度:105
通过前面章节的学习,我们已经学会如何定义一个类,但要想使用它,必须创建该类的对象。 创建类对象的过程,又称为类的实例化。 Python类的实例化 对已定义好的类进行实例化,其语法格式如下: 类名(参数) 定义类时,如果没有手动添加 __init__() 构造方法[详细]
-
Python self用法细说
所属栏目:[语言] 日期:2022-07-07 热度:195
在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数。例如,定义一个 Person 类: class Person: def __init__(self): print(正在执行构造方法) # 定义一个study()实例方法 def study(self,n[详细]
-
Python类变量与实例变量 类属性和实例属性
所属栏目:[语言] 日期:2022-07-07 热度:171
无论是类属性还是类方法,都无法像普通变量或者函数那样,在类的外部直接使用它们。我们可以将类看做一个独立的空间,则类属性其实就是在类体中定义的变量,类方法是在类体中定义的函数。 前面章节提到过,在类体中,根据变量定义的位置不同,以及定义的方[详细]
-
Python实例方法 静态方法和类方法详解 包含差异和用法
所属栏目:[语言] 日期:2022-07-07 热度:151
和类属性一样,类方法也可以进行更细致的划分,具体可分为类方法、实例方法和静态方法。 和类属性的分类不同,对于初学者来说,区分这 3 种类方法是非常简单的,即采用 @classmethod 修饰的方法为类方法;采用 @staticmethod 修饰的方法为静态方法;不用任[详细]
-
Python类调用实例方式
所属栏目:[语言] 日期:2022-07-07 热度:89
通过前面的学习,类方法大体分为 3 类,分别是类方法、实例方法和静态方法,其中实例方法用的是最多的。我们知道,实例方法的调用方式其实有 2 种,既可以采用类对象调用,也可以直接通过类名调用。 通常情况下,我们习惯使用类对象调用类中的实例方法。但[详细]
-
何为描述符 Python描述符详解
所属栏目:[语言] 日期:2022-07-06 热度:107
Python 中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。 本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。 描述符是 Python 中复杂属性访问的基础,[详细]
