-
十字链表法 十字链表压缩存储稀疏矩阵解析
所属栏目:[语言] 日期:2022-07-08 热度:67
对于压缩存储稀疏矩阵,无论是使用三元组顺序表,还是使用行逻辑链接的顺序表,归根结底是使用数组存储稀疏矩阵。介于数组 不利于插入和删除数据 的特点,以上两种压缩存储方式都不适合解决类似 向矩阵中添加或删除非 0 元素 的问题。 例如,A 和 B 分别为两[详细]
-
矩阵 稀疏矩阵 的转置算法 C语言 说明
所属栏目:[语言] 日期:2022-07-07 热度:88
矩阵(包括稀疏矩阵)的转置,即互换矩阵中所有元素的行标和列标, 矩阵转置的实现思路是:不断遍历存储矩阵的三元组表,每次都取出表中 j 列最小的那一个三元组,互换行标和列标的值,并按次序存储到一个新三元组表中,。 例如,将图 2a) 三元组表存储的矩[详细]
-
什么叫做广义表
所属栏目:[语言] 日期:2022-07-07 热度:79
前面讲过,数组即可以存储不可再分的数据元素(如数字 5、字符 a),也可以继续存储数组(即 n 维数组)。 但需要注意的是,以上两种数据存储形式绝不会出现在同一个数组中。例如,我们可以创建一个整形数组去存储 {1,2,3},我们也可以创建一个二维整形数组[详细]
-
广义表的存储结构详解 包括2种存储方案
所属栏目:[语言] 日期:2022-07-07 热度:53
由于广义表中既可存储原子(不可再分的数据元素),也可以存储子表,因此很难使用顺序存储结构表示,通常情况下广义表结构采用链表实现。 使用顺序表实现广义表结构,不仅需要操作 n 维数组(例如 {1,{2,{3,4}}} 就需要使用三维数组存储),还会造成存储空间[详细]
-
广义表的复制解说 含C语言代码实现
所属栏目:[语言] 日期:2022-07-07 热度:183
对于任意一个非空广义表来说,都是由两部分组成:表头和表尾。反之,只要确定的一个广义表的表头和表尾,那么这个广义表就可以唯一确定下来。 代码实现: #include stdio.h #include stdlib.h typedef struct GLNode{ int tag;//标志域 union{ char atom;//[详细]
-
数据结构的树存储构架
所属栏目:[语言] 日期:2022-07-07 热度:178
将具有一对多关系的集合中的数据元素按照图 1(A)的形式进行存储,整个存储形状在逻辑结构上看,类似于实际生活中倒着的树(图 1(B)倒过来),所以称这种存储结构为树型存储结构。 树的结点 结点:使用树结构存储的每一个数据元素都被称为结点。例如,图[详细]
-
什么是二叉树 包含满二叉树与完全二叉树
所属栏目:[语言] 日期:2022-07-07 热度:87
通过《树的存储结构》一节的学习,我们了解了一些树存储结构的基本知识。本节将给大家介绍一类具体的树结构二叉树。 经过前人的总结,二叉树具有以下几个性质: 二叉树中,第 i 层最多有 2i-1 个结点。 如果二叉树的深度为 K,那么此二叉树最多有 2K-1 个结[详细]
-
二叉树的顺序存储结构 瞧了无师自通
所属栏目:[语言] 日期:2022-07-07 热度:118
二叉树的存储结构有两种,分别为顺序存储和链式存储。本节先介绍二叉树的顺序存储结构。 二叉树的顺序存储,指的是使用顺序表(数组)存储二叉树。需要注意的是,顺序存储只适用于完全二叉树。换句话说,只有完全二叉树才可以使用顺序表存储。因此,如果我们[详细]
-
树的双亲表示法 包含C语言达成代码
所属栏目:[语言] 日期:2022-07-07 热度:93
前面讲了二叉树的顺序存储和链式存储,本节来学习如何存储具有普通树结构的数据。 普通树的过程转化为 C 语言代码为: #define MAX_SIZE 100//宏定义树中结点的最大数量 typedef char ElemType;//宏定义树结构中数据类型 typedef struct Snode{ TElemType da[详细]
-
回看算法详解
所属栏目:[语言] 日期:2022-07-07 热度:130
回溯算法,又称为试探法。解决问题时,每进行一步,都是抱着试试看的态度,如果发现当前选择并不是最好的,或者这么走下去肯定达不到目标,立刻做回退操作重新选择。这种走不通就回退再走的方法就是回溯算法。 例如,在解决列举集合 {1,2,3} 中所有子集的问[详细]
-
n个结点构造几种树
所属栏目:[语言] 日期:2022-07-07 热度:126
本节要讨论的是当给定 n(n=0)个结点时,可以构建多少种形态不同的树。 如果两棵树中各个结点的位置都一一对应,可以说这两棵树相似。如果两棵树不仅相似,而且对应结点上的数据也相同,就可以说这两棵树等价。本节中,形态不同的树指的是互不相似的树。 前[详细]
-
Java字符串大小写转换 toLowerCase 和toUpperCase
所属栏目:[语言] 日期:2022-07-06 热度:127
String 类的 toLowerCase() 方法可以将字符串中的所有字符全部转换成小写,而非字母的字符不受影响。语法格式如下: 字符串名.toLowerCase() // 将字符串中的字母全部转换为小写,非字母不受影响 toUpperCase() 则将字符串中的所有字符全部转换成大写,而非[详细]
-
Java去除字符串中的空格 trim
所属栏目:[语言] 日期:2022-07-06 热度:64
字符串中存在的首尾空格一般情况下都没有任何意义,如字符串 Hello ,但是这些空格会影响到字符串的操作,如连接字符串或比较字符串等,所以应该去掉字符串中的首尾空格,这需要使用 String 类提供的 trim() 方法。 trim() 方法的语法形式如下: 字符串名.tr[详细]
-
Java截取 提取 子字符串 substring
所属栏目:[语言] 日期:2022-07-06 热度:91
在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。 1. substring(int beginIndex) 形式 此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提[详细]
-
Java分割字符串 spilt
所属栏目:[语言] 日期:2022-07-06 热度:98
String 类的 split() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式: str.split(String sign) str.split(String sign,int limit) 其中它们的含义如下: str 为需要分割的目标字符串。 sign[详细]
-
Java截取新闻标题
所属栏目:[语言] 日期:2022-07-06 热度:141
在新闻网站中通常以列表的形式显示最新新闻的动态标题。一般情况下,一行显示一条新闻标题,而新闻标题往往比较长,因此需要对它进行截取,将超出部分显示成一个省略号。 下面编写 Java 代码,实现使用字符串的 substring() 方法来截取新闻标题并以列表的形[详细]
-
Java字符串的替换 replace replaceFirst 和replaceAll
所属栏目:[语言] 日期:2022-07-06 热度:80
在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法。 replace() 方法 replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下: 字符串.r[详细]
-
Java字符串替换实例
所属栏目:[语言] 日期:2022-07-06 热度:117
假设有一段文本里面有很多错误,如错别字。现在使用 Java 中的字符串替换方法对它进行批量修改和纠正,其中就用到了我们在《Java字符串的替换》一节中学到的 String 类的 replace() 方法、replaceFirst() 方法和 replaceAll() 方法。 创建一个 Java 类,然后[详细]
-
Java字符串比较 3种方法
所属栏目:[语言] 日期:2022-07-06 热度:167
字符串比较是常见的操作,包括比较相等、比较大[详细]
-
Java字符串查找 3种方法
所属栏目:[语言] 日期:2022-07-06 热度:162
在给定的字符串中查找字符或字符串是比较常见的操作。字符串查找分为两种形式:一种是在字符串中获取匹配字符(串)的索引值,另一种是在字符串中获取指定索引位置的字符。 根据字符查找 String 类的 indexOf() 方法和 lastlndexOf() 方法用于在字符串中获取[详细]
-
Java StringBuffer类详解
所属栏目:[语言] 日期:2022-07-06 热度:84
在 Java 中,除了通过 String 类创建和处理字符串之外,还可以使用 StringBuffer 类来处理字符串。StringBuffer 类可以比 String 类更高效地处理字符串。 因为 StringBuffer 类是可变字符串类,创建 StringBuffer 类的对象后可以随意修改字符串的内容。每个[详细]
-
C++基类和派生类的创建函数
所属栏目:[语言] 日期:2022-07-05 热度:107
前面我们说基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通[详细]
-
C++基类与派生类的析构函数
所属栏目:[语言] 日期:2022-07-05 热度:138
和构造函数类似,析构函数也不能被继承。与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。 另外析构函数的执行顺序和构造函数的执行顺序也刚好相反: 创建派生类[详细]
-
C++多继承 多重继承 细说
所属栏目:[语言] 日期:2022-07-05 热度:183
在前面的例子中,派生类都只有一个基类,称为单继承(Single Inheritance)。除此之外,C++也支持多继承(Multiple Inheritance),即一个派生类可以有两个或多个基类。 多继承容易让代码逻辑复杂、思路混乱,一直备受争议,中小型项目中较少使用,后来的 Ja[详细]
-
C++虚继承和虚基类解说
所属栏目:[语言] 日期:2022-07-05 热度:182
多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。 多继承时很容易产生命名冲突,即使我[详细]