数据结构
sofency
stay hungry stay foolish
展开
-
二叉排序树与平衡二叉树(AVL)
首先明白我们为什么使用二叉树来存储,并进行查找,它和我们通常的链式存储和线性存储有什么优势,分析完毕之后,我们再学习二叉树就很有针对性。对于数组来说,我们查找数据替换数据很方便,但是遇到插入数据和删除数据来说就很麻烦。对于单链表来说,方便进行插入和删除,但是查找的话就很不方便。基本事件复杂度都在O(n)对于二叉树来说,用它存储的数据对于查询和删除,时间复杂度得到很大的提升。对于二叉排序树,...原创 2020-03-08 22:37:41 · 1122 阅读 · 0 评论 -
赫夫曼编码 压缩与解压
假如有这样如下字符串(40个字符 包括空格),需要存储到文件中。i like like like java do you like a java对于字符串来说,它是由字符类型组装起来的,字符类型即char类型,熟悉java的都知道java中char是基本的数据类型之一,占据一个字节。对于该字符串的二进制表示如下1101001 100000 1101100 1101001 1101011 1...原创 2020-03-07 15:41:29 · 239 阅读 · 0 评论 -
希尔排序-交换式-移动式
学习希尔排序后仔细想了想,发现它就是一种变种的冒泡排序和变种的插入排序。希尔排序的基本思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。示例数组int[] arr={8,9,1,7,2,3,5,4,6,0}初始增量是gap=arr.length/2,意味着整个数组被分成...原创 2020-02-15 17:48:13 · 484 阅读 · 0 评论 -
八皇后问题-回溯算法
public class Queue8 { private static int max =8; private static int[] arr= new int[8];//临时存储八皇后 下标代表第几行 值代表第几列 private static int count=0; //判断当前的结点是否冲突 public static boolean judg...原创 2020-02-14 20:54:35 · 147 阅读 · 0 评论 -
逆波兰计算器-中缀表达式转后缀表达式
import java.util.*;/** * @auther sofency * @date 2020/2/13 14:50 * @package 韩顺平数据结构 * 逆波兰表达式 将中缀表达式转化为后缀表达式 然后再进行运算 */public class PolandNotation { //将中缀表达式转化为List public static List...原创 2020-02-13 17:32:36 · 185 阅读 · 0 评论 -
数据结构课程设计—运动会分数统计
#include <stdio.h>#include <stdlib.h>#include<Windows.h>#include <string.h>#define Sch 10//学校数目 #define num 10//项目数目 typedef struct//每个学校派一名参加比赛 { int AllScore; //总...原创 2019-01-04 15:38:10 · 5202 阅读 · 1 评论 -
【复习】数据结构之线性表
当我认真看完严蔚敏和吴伟民的数据结构(C语言版)的前两章时我才发现这本书讲的是太好了。理论与算法分析相结合是这本书真正的魅力所在。第一章数据的存储方式1.集合 可以理解为一组相同类型的数据放在一起但彼此之间却没有任何联系2.线性表 一组相同类型的数据放在一起,彼此之间只存在一种关系将它们联系起来,比如数组 array[4]={1,2,3,4};这些数据是由于array的下标联系在...原创 2018-12-12 11:41:34 · 201 阅读 · 0 评论 -
KMP模式匹配算法
先看一下 KMP 算法运行流程(假设主串:ababcabcacbab,模式串:abcac)。第一次匹配:匹配失败,i 指针不动,j = 1(字符‘c’的next值);第二次匹配:相等,继续,直到:匹配失败,i 不动,j = 2 ( j 指向的字符 ‘c’ 的 next 值);第三次匹配:相等,i 和 j 后移,最终匹配成功。使用普通算法,需要匹配 6 次;而使用 KMP 算法...转载 2018-12-22 15:46:21 · 1287 阅读 · 1 评论 -
对哈希函数及算法的理解
哈希函数的本质就是取关键字的一些特征来确定存储的位置。1.直接定址法假如将arr[4]={12,5,18,10,7,9};存到arr1[MAXSIZE]里面可以按如下存|12|5|18|10|7|9||–|--|–|--|–|--|–||arr1[12]|arr1[5]|arr1[18]|arr1[10]|arr1[7]|arr1[9]|其他的位置存0缺点:可知这种存法很浪费空间,...原创 2018-12-06 19:57:34 · 581 阅读 · 0 评论 -
用栈解决迷宫问题求出路径
1.用栈解决迷宫问题,比较暴力,实际上是经过大量的试错才得出的路径问题分析a.首先画出图,我用1代表墙,用0代表非墙。b.首先要规定入口的坐标位置c.然后规定寻找的方向规则比如 先每到一个位置先看下该点的左侧是否非墙,如果是返回该点的坐标并将该点对应的下标(在之后要用该下标解析出对应的坐标)入栈,如果是墙的话,就看该点的下面是否非墙…总之我规定的顺序是左-下-右-上。(这个也是该代码...原创 2018-12-06 16:00:00 · 1044 阅读 · 2 评论 -
C-稀疏矩阵一次快速定位算法-数据结构
版权声明:本文为博主原创文章,转载请注明出处,谢谢。 https://blog.csdn.net/sofency/article/details/#include &amp;amp;lt;stdlib.h&amp;amp;gt;#define MAXSIZE 100#define ElementType int//扫描数组将非零元素存在三元组里面typedef struct{ int row, col;//非...原创 2018-11-26 09:30:33 · 653 阅读 · 0 评论 -
C语言—邻接矩阵和邻接表的理解
要谈邻接表,那我们先谈谈邻接矩阵,因为邻接表就是因为邻接矩阵对于稀疏图造成内存的很大浪费。那么它是如何浪费的哪? 别急慢慢来!什么叫做邻接矩阵?它就是存储顶点是否存在连接关系的二维数组如下(右),关系图(左)解释图:如果a1-&amp;amp;amp;gt;a2有线连接的话,用1表示反之用0表示。代码如下:#define MAX_VERTEX_NUM 20 /*最多顶点数目*/#define I...原创 2018-11-17 21:22:56 · 3416 阅读 · 0 评论 -
对图的基本理解——数据结构
首先对于图内所需的基本术语进行理解顶点可以理解为之前学的结点。可以理解为之前学的结点。VR两个顶点之间的关系,(比如a----b(无向图),这样说明a的尾部是b,也可以知道b的头是a)。弧---->有向图 边----->无向图比如a---->b,可以这样理解a能检索到b,但b不能检索到a。这样的话----->这种的符号称为弧,即弧是单向的,是有向图特...原创 2018-11-17 18:11:04 · 2085 阅读 · 0 评论