- 博客(8)
- 收藏
- 关注
原创 数据结构-树(赫夫曼树(哈夫曼树)(最优二叉树))-C语言
哈夫曼树(Huffman Tree)是一种特殊的二叉树,这种树的所有叶子节点都带有权值,哈夫曼树的主要目的是产生叶子节点的哈夫曼编码。哈夫曼树哈夫曼树的定义构造哈夫曼树哈夫曼树编码相关代码结果图示哈夫曼树的定义赫夫曼大叔说,从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径长度。从根结点到各个叶子结点的路径长度与相应结点的权值的乘积的和称为该二叉树的带权路径长度,记作:如下图所示的带权二叉树:给定一组具有确定权值的叶子结点,可以构造出不同的二叉树,例如用4个
2020-06-15 10:03:47 1207 1
原创 数据结构-图(存储结构-十字链表)-C语言
对于有向图来说,邻接表是有缺陷的。关心了出度问题,想了解入度就必须要遍历整个图才能知道,反之,逆邻接表解决了入度却不了解出度的情况。有没有可能把邻接表与逆邻接表结合起来呢?答案是肯定的,就是把它们整合在-一起。这就是我们现在要讲的有向图的一种存储方法:十字链表(Orthogonal List)。#include <stdio.h>#include <stdlib.h>typedef char datatype;typedef int edgetype; //权值类型,建立网
2020-06-08 17:38:59 564
原创 数据结构-图(存储结构-邻接矩阵与邻接表)-C语言
图是一种复杂的数据结构,顶点之间的逻辑关系错综复杂,因此图的存储结构也分多种,由于图是由顶点和边或弧这两部分组成,所以将这两部分合到一个结构中比较困难。所以我们使用两个结构去存储图这种结构。这里主要介绍两种基本的存储结构,即邻接矩阵与邻接表。图的邻接矩阵(Adjacency Matrix) 存储方式是用两个数组来表示图。一个一维 数组存储图中顶点信息, 一个二维数组(称为邻接矩阵)存储图中的边或弧的信息。//*****图——邻接矩阵*******#include <stdio.h>#
2020-06-08 17:36:46 5590 1
原创 数据结构-树(树、森林与二叉树之间的转换)
我们看够了二叉树的存储结构与运算,那么如何实现一般树的运算呢?由于一般树中的节点含有多个子节点,如果采用类似二叉树链式存储结构,其节点的指针域个数必然要采用最多子节点的个数,这样会极大的浪费空间。为此,我们可将一般的树或森林转换成二叉树,采用二叉树的存储结构与运算方法后再将该二叉树转换为一般的树或森林。树、森林与二叉树之间的转换树->二叉树森林->二叉树二叉树->树二叉树->森林树与森林的遍历树->二叉树步骤:1.加线。在所有兄弟结点之间加一条连线。2.去线。对树
2020-05-26 17:40:41 1501
原创 数据结构-链表(为什么要使用双重指针+详解)-C语言
想要理解为什么在链表中使用双重指针这一知识点,首要我们要明白的一点就是,指针变量作为函数的参数时。它的作用是将一个变量的地址传送到这个函数中。但如果我们想要在子函数中改变实参的值需要怎么做呢?一般函数代码示例:#include <stdio.h>int main(){ //比较两个数a,b的大小并将最大值赋给max_num void max_a(int *x,int *y,int *max_num); void max_b(int x,int y,int max_num
2020-05-20 11:55:00 5347 5
原创 数据结构-稀疏矩阵(三元组矩阵、十字链表矩阵)-C语言
学习了数据结构这门课后,针对我所掌握的知识进行学习记录。源码链接: https://github.com/GetorPut/Data-Structure.三元组矩阵、十字链表矩阵三元组矩阵十字链表矩阵#define smax 30 //定义存储元素空间大小,可根据按照需求更改 typedef int datatype;三元组矩阵// 定义存储三元组的结构体typedef struc...
2020-05-06 13:59:06 1810 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人