-
三元组顺序表 稀疏矩阵的三元组表示及 C语言 做成
所属栏目:[语言] 日期:2022-07-08 热度:181
本节介绍稀疏矩阵的三元组顺序表压缩存储方式。 通过《矩阵的压缩存储》一节我们知道,稀疏矩阵的压缩存储,至少需要存储以下信息: 矩阵中各非 0 元素的值,以及所在矩阵中的行标和列标; C 语言中,三元组需要用结构体实现,如下所示: //三元组结构体 t[详细]
-
行逻辑链接的顺序表 压缩存储稀疏矩阵 细说
所属栏目:[语言] 日期:2022-07-08 热度:139
前面学习了如何使用三元组顺序表存储稀疏矩阵,其实现过程就是将矩阵中各个非 0 元素的行标、列标和元素值以三元组的形式存储到一维数组中。通过研究实现代码你会发现,三元组顺序表每次提取指定元素都需要遍历整个数组,运行效率很低。 本节将学习另一种[详细]
-
十字链表法 十字链表压缩存储稀疏矩阵解析
所属栏目:[语言] 日期:2022-07-08 热度:186
对于压缩存储稀疏矩阵,无论是使用三元组顺序表,还是使用行逻辑链接的顺序表,归根结底是使用数组存储稀疏矩阵。介于数组 不利于插入和删除数据 的特点,以上两种压缩存储方式都不适合解决类似 向矩阵中添加或删除非 0 元素 的问题。 例如,A 和 B 分别为[详细]
-
矩阵 稀疏矩阵 的转置算法 C语言 说明
所属栏目:[语言] 日期:2022-07-07 热度:165
矩阵(包括稀疏矩阵)的转置,即互换矩阵中所有元素的行标和列标, 矩阵转置的实现思路是:不断遍历存储矩阵的三元组表,每次都取出表中 j 列最小的那一个三元组,互换行标和列标的值,并按次序存储到一个新三元组表中,。 例如,将图 2a) 三元组表存储的[详细]
-
什么叫做广义表
所属栏目:[语言] 日期:2022-07-07 热度:185
前面讲过,数组即可以存储不可再分的数据元素(如数字 5、字符 a),也可以继续存储数组(即 n 维数组)。 但需要注意的是,以上两种数据存储形式绝不会出现在同一个数组中。例如,我们可以创建一个整形数组去存储 {1,2,3},我们也可以创建一个二维整形数[详细]
-
广义表的存储结构详解 包括2种存储方案
所属栏目:[语言] 日期:2022-07-07 热度:111
由于广义表中既可存储原子(不可再分的数据元素),也可以存储子表,因此很难使用顺序存储结构表示,通常情况下广义表结构采用链表实现。 使用顺序表实现广义表结构,不仅需要操作 n 维数组(例如 {1,{2,{3,4}}} 就需要使用三维数组存储),还会造成存储空[详细]
-
广义表的复制解说 含C语言代码实现
所属栏目:[语言] 日期:2022-07-07 热度:152
对于任意一个非空广义表来说,都是由两部分组成:表头和表尾。反之,只要确定的一个广义表的表头和表尾,那么这个广义表就可以唯一确定下来。 代码实现: #include stdio.h #include stdlib.h typedef struct GLNode{ int tag;//标志域 union{ char atom;/[详细]
-
数据结构的树存储构架
所属栏目:[语言] 日期:2022-07-07 热度:117
将具有一对多关系的集合中的数据元素按照图 1(A)的形式进行存储,整个存储形状在逻辑结构上看,类似于实际生活中倒着的树(图 1(B)倒过来),所以称这种存储结构为树型存储结构。 树的结点 结点:使用树结构存储的每一个数据元素都被称为结点。例如,[详细]
-
什么是二叉树 包含满二叉树与完全二叉树
所属栏目:[语言] 日期:2022-07-07 热度:85
通过《树的存储结构》一节的学习,我们了解了一些树存储结构的基本知识。本节将给大家介绍一类具体的树结构二叉树。 经过前人的总结,二叉树具有以下几个性质: 二叉树中,第 i 层最多有 2i-1 个结点。 如果二叉树的深度为 K,那么此二叉树最多有 2K-1 个[详细]
-
二叉树的顺序存储结构 瞧了无师自通
所属栏目:[语言] 日期:2022-07-07 热度:83
二叉树的存储结构有两种,分别为顺序存储和链式存储。本节先介绍二叉树的顺序存储结构。 二叉树的顺序存储,指的是使用顺序表(数组)存储二叉树。需要注意的是,顺序存储只适用于完全二叉树。换句话说,只有完全二叉树才可以使用顺序表存储。因此,如果我[详细]
-
树的双亲表示法 包含C语言达成代码
所属栏目:[语言] 日期:2022-07-07 热度:204
前面讲了二叉树的顺序存储和链式存储,本节来学习如何存储具有普通树结构的数据。 普通树的过程转化为 C 语言代码为: #define MAX_SIZE 100//宏定义树中结点的最大数量 typedef char ElemType;//宏定义树结构中数据类型 typedef struct Snode{ TElemType[详细]
-
回看算法详解
所属栏目:[语言] 日期:2022-07-07 热度:201
回溯算法,又称为试探法。解决问题时,每进行一步,都是抱着试试看的态度,如果发现当前选择并不是最好的,或者这么走下去肯定达不到目标,立刻做回退操作重新选择。这种走不通就回退再走的方法就是回溯算法。 例如,在解决列举集合 {1,2,3} 中所有子集的[详细]
-
n个结点构造几种树
所属栏目:[语言] 日期:2022-07-07 热度:200
本节要讨论的是当给定 n(n=0)个结点时,可以构建多少种形态不同的树。 如果两棵树中各个结点的位置都一一对应,可以说这两棵树相似。如果两棵树不仅相似,而且对应结点上的数据也相同,就可以说这两棵树等价。本节中,形态不同的树指的是互不相似的树。[详细]
-
Java选择排序法
所属栏目:[语言] 日期:2022-07-07 热度:78
假设当前存在一个 int 类型的数组 number,该数组中的元素依次是 13、15、 24、99、4 和 1。如果使用冒泡排序进行两两相邻比较,第一趟排序后的结果如下: 13、15、24、4、1、99 第二趟排序后的结果如下: 13、15、4、1、24、99 第三趟排序后的结果如下:[详细]
-
Java直接插入排序法
所属栏目:[语言] 日期:2022-07-07 热度:72
直接插入排序的基本思想是:将 n 个有序数存放在数组 a 中,要插入的数为 x,首先确定 x 插在数组中的位置 p,然后将 p 之后的元素都向后移一个位置,空出 a(p),将 x 放入 a(p),这样可实现插入 x 后仍然有序。 例 1 本例子通过直接插入的方法对上述例子[详细]
-
对Java数组的总结
所属栏目:[语言] 日期:2022-07-07 热度:116
数组(Array)是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来唯一确定数组中的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。 一维数组 数组中每个元素都只带有一个下标,是数组中最[详细]
-
Java求数组元素的最大和最小值
所属栏目:[语言] 日期:2022-07-07 热度:129
本节通过求数组的最大和最小值来提高初学者对数组的一些基本应用。 public class Example{ public static void main(String[] args) { int score[] = { 67, 89, 87, 69, 90, 100, 75, 90 }; // 初始化数组 int max = 0; // 定义变量保存到最大值 int min =[详细]
-
Python __all__变量用处
所属栏目:[语言] 日期:2022-07-07 热度:80
事实上,当我们向文件导入某个模块时,导入的是该模块中那些名称不以下划线(单下划线_或者双下划线__)开头的变量、函数和类。因此,如果我们不想模块文件中的某个成员被引入到其它文件中使用,可以在其名称前添加下划线。 以前面章节中创建的 demo.py 模[详细]
-
Python包 储放多个模块的文件夹
所属栏目:[语言] 日期:2022-07-07 热度:163
实际开发中,一个大型的项目往往需要使用成百上千的 Python 模块,如果将这些模块都堆放在一起,势必不好管理。而且,使用模块可以有效避免变量名或函数名重名引发的冲突,但是如果模块名重复怎么办呢?因此,Python提出了包(Package)的概念。 什么是包[详细]
-
Python创建包 导入包 进门必读
所属栏目:[语言] 日期:2022-07-07 热度:139
《Python包》一节中已经提到,包其实就是文件夹,更确切的说,是一个包含__init__.py文件的文件夹。因此,如果我们想手动创建一个包,只需进行以下 2 步操作: 新建一个文件夹,文件夹的名称就是新建包的包名; 在该文件夹中,创建一个 __init__.py 文件([详细]
-
Python查看模块 变量 函数 类 办法
所属栏目:[语言] 日期:2022-07-07 热度:137
前面章节中,详细介绍了模块和包的创建和使用(严格来说,包本质上也是模块),有些读者可能有这样的疑问,即正确导入模块或者包之后,怎么知道该模块中具体包含哪些成员(变量、函数或者类)呢? 查看已导入模块(包)中包含的成员,本节给大家介绍 2 种[详细]
-
Python __doc__属性 查阅文档
所属栏目:[语言] 日期:2022-07-07 热度:70
在使用 dir() 函数和 __all__ 变量的基础上,虽然我们能知晓指定模块(或包)中所有可用的成员(变量、函数和类),比如: import string print(string.__all__) 程序执行结果为: [ascii_letters, ascii_lowercase, ascii_uppercase, capwords, digits, h[详细]
-
Python __file__属性 查看模块的源文件途径
所属栏目:[语言] 日期:2022-07-07 热度:166
前面章节提到,当指定模块(或包)没有说明文档时,仅通过 help() 函数或者 __doc__ 属性,无法有效帮助我们理解该模块(包)的具体功能。在这种情况下,我们可以通过 __file__ 属性查找该模块(或包)文件所在的具体存储位置,直接查看其源代码。 仍以前[详细]
-
Python枚举类定义和运用
所属栏目:[语言] 日期:2022-07-07 热度:69
一些具有特殊含义的类,其实例化对象的个数往往是固定的,比如用一个类表示月份,则该类的实例对象最多有 12 个;再比如用一个类表示季节,则该类的实例化对象最多有 4 个。 针对这种特殊的类,Python 3.4 中新增加了 Enum 枚举类。也就是说,对于这些实例[详细]
-
Python __dir__ 用法 列出对象的全部属性 方法 名
所属栏目:[语言] 日期:2022-07-07 热度:144
前面在介绍 Python 内置函数时,提到了 dir() 函数,通过此函数可以某个对象拥有的所有的属性名和方法名,该函数会返回一个包含有所有属性名和方法名的有序列表。 举个例子: class CLanguage: def __init__ (self,): self.name = C语言中文网 self.add =[详细]
