-
数据结构的图存储框架
所属栏目:[语言] 日期:2022-07-07 热度:175
我们知道,数据之间的关系有 3 种,分别是 一对一、一对多 和 多对多,前两种关系的数据可分别用线性表和树结构存储,本节学习存储具有多对多逻辑关系数据的结构图存储结构。 图存储结构基本常识 弧头和弧尾 有向图中,无箭头一端的顶点通常被称为初始点或[详细]
-
何为连通图 强 连通图详解
所属栏目:[语言] 日期:2022-07-07 热度:189
前面介绍了《图存储结构》,本节继续讲解什么是连通图。 前面讲过,图中从一个顶点到达另一顶点,若存在至少一条路径,则称这两个顶点是连通着的。例如图 1 中,虽然 V1 和 V3 没有直接关联,但从 V1 到 V3 存在两条路径,分别是 V1-V2-V3 和 V1-V4-V3,因[详细]
-
什么是生成树 生成树 生成森林 解说
所属栏目:[语言] 日期:2022-07-07 热度:127
在学习连通图的基础上,本节学习什么是生成树,以及什么是生成森林。 对连通图进行遍历,过程中所经过的边和顶点的组合可看做是一棵普通树,通常称为生成树。 连通图中,由于任意两顶点之间可能含有多条通路,遍历连通图的方式有多种,往往一张连通图可能[详细]
-
深度优先搜索 DFS 深搜 及广度优先搜索 BFS 广搜
所属栏目:[语言] 日期:2022-07-07 热度:91
深度优先搜索的过程类似于树的先序遍历,首先从例子中体会深度优先搜索。例如图 1 是一个无向图,采用深度优先算法遍历这个图的过程为: 首先任意找一个未被遍历过的顶点,例如从 V1 开始,由于 V1 率先访问过了,所以,需要标记 V1 的状态为访问过; 然后[详细]
-
图的邻接多层表存储结构
所属栏目:[语言] 日期:2022-07-07 热度:204
前面讲过,无向图的存储可以使用邻接表,但在实际使用时,如果想对图中某顶点进行实操(修改或删除),由于邻接表中存储该顶点的节点有两个,因此需要操作两个节点。 为了提高在无向图中操作顶点的效率,本节学习一种新的适用于存储无向图的方法邻接多重表[详细]
-
图的十字链表存储构架
所属栏目:[语言] 日期:2022-07-07 热度:157
前面介绍了图的邻接表存储法,本节继续讲解图的另一种链式存储结构十字链表法。 与邻接表不同,十字链表法仅适用于存储有向图和有向网。不仅如此,十字链表法还改善了邻接表计算图中顶点入度的问题。 十字链表存储有向图(网)的方式与邻接表有一些相同,[详细]
-
Java Boolean类
所属栏目:[语言] 日期:2022-07-07 热度:90
Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类的对象只包含一个类型为 boolean 的字段。此外,此类还为 boolean 和 String 的相互转换提供了很多方法,并提供了处理 boolean 时非常有用的其他一些常用方法。 Boolean 类的构造方[详细]
-
Java Character类
所属栏目:[语言] 日期:2022-07-07 热度:134
Character 类是字符数据类型 char 的包装类。Character 类的对象包含类型为 char 的单个字段,这样能把基本数据类型当对象来处理,其常用方法如表 1 所示。 表 1 Character类的常用方法 方法 描述 void Character(char value) 构造一个新分配的 Character[详细]
-
Java Number类
所属栏目:[语言] 日期:2022-07-07 热度:77
Number 是一个抽象类,也是一个超类(即父类)。Number 类属于 java.lang 包,所有的包装类(如 Double、Float、Byte、Short、Integer 以及 Long)都是抽象类 Number 的子类。 Number 类定义了一些抽象方法,以各种不同数字格式返回对象的值。如 xxxValue([详细]
-
Java Integer类详解
所属栏目:[语言] 日期:2022-07-07 热度:74
Integer 类在对象中包装了一个基本类型 int 的值。Integer 类对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。 Integer 类的构造方法 Integer[详细]
-
Java Float类
所属栏目:[语言] 日期:2022-07-07 热度:89
Float 类在对象中包装了一个基本类型 float 的值。Float 类对象包含一个 float 类型的字段。此外,该类提供了多个方法,能在 float 类型与 String 类型之间互相转换,同时还提供了处理 float 类型时比较常用的常量和方法。 Float 类的构造方法 Float 类中[详细]
-
Java Double类
所属栏目:[语言] 日期:2022-07-07 热度:193
Double 类在对象中包装了一个基本类型 double 的值。Double 类对象包含一个 double 类型的字段。此外,该类还提供了多个方法,可以将 double 类型与 String 类型相互转换,同时 还提供了处理 double 类型时比较常用的常量和方法。 Double 类的构造方法 Dou[详细]
-
Python lambda表达式 匿名函数 和用法
所属栏目:[语言] 日期:2022-07-07 热度:99
对于定义一个简单的函数,Python 还提供了另外一种方法,即使用本节介绍的 lambda 表达式。 lambda 表达式,又称匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。 lambda[详细]
-
Python eval 和exec 函数解说
所属栏目:[语言] 日期:2022-07-07 热度:171
eval() 和 exec() 函数都属于 Python 的内置函数,由于这两个函数在功能和用法方面都有相似之处,所以将它们放到一节进行介绍。 eval() 和 exec() 函数的功能是相似的,都可以执行一个字符串形式的 Python 代码(代码以字符串的形式提供),相当于一个 Pyt[详细]
-
何为面向对象 Python面向对象 一切皆对象
所属栏目:[语言] 日期:2022-07-07 热度:192
读者肯定听过 Python 中一切皆对象的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面向对象的含义。 面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵[详细]
-
Python class 定义类 进门必读
所属栏目:[语言] 日期:2022-07-07 热度:177
前面章节中已经提到,类仅仅充当图纸的作用,本身并不能直接拿来用,而只有根据图纸造出的实际物品(对象)才能直接使用。因此,Python 程序中类的使用顺序是这样的: 创建(定义)类,也就是制作图纸的过程; 创建类的实例对象(根据图纸造出实际的物品)[详细]
-
Python __init__ 类构造方式
所属栏目:[语言] 日期:2022-07-07 热度:179
在创建类时,我们可以手动添加一个 __init__() 方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。 构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python 解释器都会自动调用它。Python 类中,手动添加构造方法的语法格式如下[详细]
-
Python类对象的创建和运用
所属栏目:[语言] 日期:2022-07-07 热度:189
通过前面章节的学习,我们已经学会如何定义一个类,但要想使用它,必须创建该类的对象。 创建类对象的过程,又称为类的实例化。 Python类的实例化 对已定义好的类进行实例化,其语法格式如下: 类名(参数) 定义类时,如果没有手动添加 __init__() 构造方法[详细]
-
Python self用法细说
所属栏目:[语言] 日期:2022-07-07 热度:71
在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数。例如,定义一个 Person 类: class Person: def __init__(self): print(正在执行构造方法) # 定义一个study()实例方法 def study(self,n[详细]
-
Python类变量与实例变量 类属性和实例属性
所属栏目:[语言] 日期:2022-07-07 热度:139
无论是类属性还是类方法,都无法像普通变量或者函数那样,在类的外部直接使用它们。我们可以将类看做一个独立的空间,则类属性其实就是在类体中定义的变量,类方法是在类体中定义的函数。 前面章节提到过,在类体中,根据变量定义的位置不同,以及定义的方[详细]
-
Python实例方法 静态方法和类方法详解 包含差异和用法
所属栏目:[语言] 日期:2022-07-07 热度:117
和类属性一样,类方法也可以进行更细致的划分,具体可分为类方法、实例方法和静态方法。 和类属性的分类不同,对于初学者来说,区分这 3 种类方法是非常简单的,即采用 @classmethod 修饰的方法为类方法;采用 @staticmethod 修饰的方法为静态方法;不用任[详细]
-
Python类调用实例方式
所属栏目:[语言] 日期:2022-07-07 热度:107
通过前面的学习,类方法大体分为 3 类,分别是类方法、实例方法和静态方法,其中实例方法用的是最多的。我们知道,实例方法的调用方式其实有 2 种,既可以采用类对象调用,也可以直接通过类名调用。 通常情况下,我们习惯使用类对象调用类中的实例方法。但[详细]
-
何为描述符 Python描述符详解
所属栏目:[语言] 日期:2022-07-06 热度:186
Python 中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。 本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。 描述符是 Python 中复杂属性访问的基础,[详细]
-
Python property 函数 概念属性
所属栏目:[语言] 日期:2022-07-06 热度:167
前面章节中,我们一直在用类对象.属性的方式访问类中定义的属性,其实这种做法是欠妥的,因为它破坏了类的封装原则。正常情况下,类包含的属性应该是隐藏的,只允许通过类提供的方法来间接实现对类属性的访问和操作。 因此,在不破坏类封装原则的基础上,[详细]
-
Python封装机制及达成方法
所属栏目:[语言] 日期:2022-07-06 热度:63
不光是 Python,大多数面向对象编程语言(诸如 C++、Java 等)都具备 3 个典型特征,即封装、继承和多态。其中,本节重点讲解 Python 类的封装特性,继承和多态会在后续章节给大家做详细讲解。 简单的理解封装(Encapsulation),即在设计类时,刻意地将一[详细]