随笔分类 - 数据结构
c语言数据结构基础知识
摘要:问题描述: 输入两个整数,求这两个整数的最大公约数和最小公倍数。 代码参考: 注意:最小公倍数 =(已知两个整数的乘积)/ 最大公约数 参考自 - [ 菜鸟教程] #include<iostream> using namespace std; int main() { int a, b = 0; c
阅读全文
摘要:问题描述: 请打印出下列三角形: 很明显,第i行的第j个元素等于第i-1行的第j-1和j+1的元素和。 所以较常见的方法是用数组存储所有行的值,空格位置默认为0。 但下面这种方法不需要额外的空间,直接观察规则得到当前位置元素的值等于前一个位置的值 *(i - j + 1) / j. i为行号,j为列
阅读全文
摘要:基本思想: 1:从图中某个顶点Vi出发,先访问Vi 2:选择一个与刚访问的顶点Vi相邻且未访问过的顶点,然后访问该顶点。接而以该顶点为新顶点,重复本步骤,知道当前顶点没有未访问的邻接点为止。 3:返回前一个访问过的且仍有未访问的邻接点的顶点,找出并访问该顶点的下一个未访问的邻接点,重复执行步骤2 这
阅读全文
摘要:有权图的另一种存储结构是边集数组,适用于一些以边为主的操作,用边集数组表示有权图时,列出每条边所依附的两个顶点及边上的权,即每个数组元素代表一条边的信息。 存储结构如下: 完整程序: 1 //无向带权图边集数组存储 2 #include<cstdio> 3 #include<iostream> 4
阅读全文
摘要:邻接表是图的一种顺序存储和链式存储相结合的存储方法,对于邻接矩阵存储方法中,边数相对顶点较少的图造成的空间浪费,在邻接表中很好的避免了这个问题。 对于图中每个顶点Vi,将邻接于Vi的所有顶点Vj链成一个单链表,单链表中的节点称为表节点,这个单链表就称为顶点Vi的邻接表,对每个顶点的邻接表建立一个头节
阅读全文
摘要:1.介绍图的相关概念 图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为: G=(V,E) 其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有
阅读全文
摘要:哈夫曼树(最优二叉树) 每个叶子节点都有权值,权值越大的叶节点越靠近根节点,而权值越小的叶节点越远离根节点 建立规则: 依据给出的n个权值,选择最小的两个权值作为一棵新的二叉树的左右子树,并且新的根节点的权值为左右子树权值之和 将新根节点与剩下的有权值的节点重复此操作直至只剩一个根节点 哈夫曼编码:
阅读全文
摘要:如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,所以就可以定义一个枚举类型来表示它 枚举元素系统按照
阅读全文
摘要:定义: union 共用体名{ 成员列表}; 与结构体不同的是,共用体的所有成员占用同一段内存,修改一个成员会影响其余成员。但是结构体的各个成员会占不同的内存。 结构体占用的内存大于等于所有成员占用的内存总和(成员之间可能存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术
阅读全文
摘要:结构体: 正常定义一个结构体: 定义结构体指针: Seq *s;或者llink t;之后关于s与t的用法,其实完全一样,只是在定义时不同,Seq *就相当于llink了 以为定义完指针以后就可以使用了吗?NO! 需要为指针申请空间才能正常使用,否则会在输入这里出现很多莫名其妙的错误!亲测如此需要添加
阅读全文