数据结构笔记
好记性不如烂笔头。。。
TTdreamloong
人工智障飞行员
展开
-
数据结构笔记--KMP算法简单理解
KMP算法中的函数值只和模式串有关,而和相匹配的主串无关。例 主串:a c a b a a b a a b c a c a a b c模式串:a b a a b c a c1.首先,我们给模式串标上序号2.之后,我们把模式串的所有前缀依次列出来(虽然前缀不能为串本身,但在这里我么也将其列在最后面)3.接下来,我们要求得每一个子串中相等的前缀与后缀的最大长度我们拿第五个子串作...原创 2019-05-26 15:54:14 · 294 阅读 · 0 评论 -
数据结构笔记--KMP算法深入讲解
前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到了对前后缀计算的正确性,但是大量的推理证明不大好理解,没有与程序结合起来讲。今天我在这里讲一讲我的一些理解,希望大家多多指教,如果有不清楚的或错误的请给我留言。...转载 2019-05-26 10:47:30 · 406 阅读 · 0 评论 -
郝斌数据结构--栈和队列
线性结构的两种常见应用之一 栈定义 一种可以实现“先进后出”的存储结构分类静态栈 类似数组的结构动态栈 类似链表的结构栈的应用(1)函数调用(所有的函数调用都是压栈与出栈) 所谓函数A调用函数B就是把A的最后执行的一个语句的地址与调用的B函数的 所有内容压到一个栈内部去执行,执行完毕出栈,然后地址出栈接着执行A函数(2)中断(中断...原创 2019-01-14 21:34:53 · 387 阅读 · 0 评论 -
郝斌数据结构--链表
模块一:线性结构连续存储【数组】1.数组定义元素类型相同, 大小相等2.数组的优缺点# include <stdio.h># include <malloc.h># include <stdlib.h># include <stdbool.h>//定义了一个数据类型,struct Arrstruct Arr{ in...原创 2019-01-13 21:44:39 · 560 阅读 · 1 评论 -
郝斌数据结构--预备知识
数据结构概述定义算法1. 时间复杂度 大概程序执行的次数,而非执行的时间2. 空间复杂度 所占内存3. 难易程度4. 健壮性计算算法时间复杂度 推倒大o阶方法- 用常数1取代运行时间中的所有加法常数- 在修改后的运行次数函数中 只保留最高阶项- 如果最高阶项存在且不是1 则去除与这个项相乘的常数常数阶线性阶 (单循环)平方阶(嵌套循环)对数阶...原创 2019-01-11 16:56:07 · 337 阅读 · 0 评论 -
郝斌数据结构--树
模块二 非线性结构树定义有且只有一个称为根的节点 有若干个互不相交的子树,这些子树本身也是一棵树通俗定义树是由节点和边组成 但有一个节点例外,该节点没有父节点,此节点称为根节点 每个节点只有一个父节点但可以有多个子节点专业术语节点 父节点 子节点 子孙 兄弟 堂兄弟 深度:从根节点到最底层节点的层数称为深度,根节点是第一层 叶子节点:没有子节...原创 2019-01-16 18:32:17 · 676 阅读 · 0 评论 -
数据结构笔记--查找
静态查找表:只进行查找操作的查找表动态查找表:在查找过程中同时插入查找表中不存在的元素,或者删除已存在的元素1.顺序表查找:从第一个或者最后一个记录开始,将每个记录的关键字与给定值比较,若相等则查找成功。C实现:# include <stdio.h># include <stdlib.h>int Sequential_Search(int *arr, int ...原创 2019-03-10 20:03:49 · 189 阅读 · 0 评论 -
数据结构笔记--排序
经典排序算法算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。算法复杂度稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如...原创 2019-03-10 19:57:01 · 261 阅读 · 0 评论 -
数据结构笔记--快速幂算法
快速幂的目的就是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,时间复杂度是O(b)为O(n)级别,快速幂能做到O(logn)原理如下: 假设我们要求a^b,那么其实b是可以拆成二进制的,该二进制数第i位的权为2^(i-1),例如当b==11时a11=a(2^0+2^1+2^3)11的二进制是1011,11 = 2³×1 + 2²×0 + 2...原创 2019-03-07 21:24:52 · 321 阅读 · 0 评论 -
数据结构笔记--二叉树的递归、非递归遍历(前序、中序、后序)
转自https://www.cnblogs.com/SHERO-Vae/p/5800363.html【写在前面】 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就 是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现...原创 2019-04-10 17:05:24 · 328 阅读 · 0 评论 -
数据结构笔记--树的广度优先遍历和深度优先遍历(递归、非递归)
1.广度优先遍历英文缩写为BFS即Breadth First Search。其过程检验来说是对每一层节点依次访问,访问完一层进入下一层,而且每个节点只能访问一次。对于上面的例子来说,广度优先遍历的 结果是:A,B,C,D,E,F,G(假设每层节点从左到右访问)。 先往队列中插入左节点,再插右节点,这样出队就是先左节点后右节点了。 广度优先遍历树,需要用到队列...原创 2019-03-16 17:44:09 · 3719 阅读 · 0 评论