
数据结构
丝多绿
这个作者很懒,什么都没留下…
展开
-
读书笔记之《数据结构》---第七章 图
本章目录1.图的定义和术语2.图的存储结构3.图的遍历4.图的连通性问题图的定义和术语图中的数据元素通常称为顶点,<v,w>是从v到w的一条弧,v是弧尾,w是弧头,此图称为有向图。(v,w)表示v和w的一条边,此图为无向图。n个顶点的图,有1/2n(n-1)条边的无向图称为完全图,有n(n-1)条弧的有向图称为有向完全图,很少条边或弧的称为稀疏图,反之称为稠密图。每条...原创 2018-10-25 16:30:28 · 376 阅读 · 0 评论 -
图的关节点算法实现
关节点:可以将一个连通分量分割成两个或多个连通分量的点。重连通图:没有关节点的图,在重连通图中任意两点之间至少存在两条路径关节点求法:算法较难理解,算法结合了先序深度搜索和后序深度搜索,先序深度搜索确定每个点访问的顺序,而后序深度搜索则根据先序计算的顺序确定关节点。具体递归算法步骤:递归算法: 递归算法中,第一部分为记录结点访问次序,中间部分为调用递归函数访问子节点,第三部分为根据递归函数的...原创 2018-11-27 13:32:45 · 5246 阅读 · 0 评论 -
最小生成树算法普利姆算法和克鲁斯卡尔算法实现
最小生成树算法:普里姆算法:顶点集合N,辅助顶点集合S,初始化中,将出发点vi加入S,并从N中删除1.从顶点集合N中找到一条到集合S最近的边(vi,vj),存储该边,并将vj从N移到S中2.重复1步骤直至所有顶点加入S集合普里姆算法:与边的多少关系不大,适合计算边稠密的图克鲁斯卡尔算法:将图中的N个订单分成Ni个点集合,T是边集合,TE是最小生成树的边集合。1.从T中找出一条最短的边,...原创 2018-11-27 13:30:28 · 622 阅读 · 0 评论 -
KPM算法实现
改进的模式匹配算法KPM算法算法思想:在主串S中对串T进行模式匹配时,当第i位失配时,并不是将T向后滑动一位,而是滑动next[i]位,算法关键是需要知道串T中每一位对应的next值。next值为T的每一位的最长前后缀匹配长度,当第i位失配后,就将T向后滑动 i - next[i]位。这样可以保证移动后的T中next[i]前的子串与S串中的相应位置的子串值都相等。 /** * @na...原创 2018-11-27 13:26:02 · 940 阅读 · 0 评论 -
折半查找与斐波那契查找算法实现
折半查找:先确定待查记录的所在的范围,然后逐步缩小范围直到找到或找不到该记录为止代码实现:/** * @name 线性表查找 * @use 从线性表中查找一个元素 * @param list 线性表 * @param aim 目标元素 * @type ORDER_01|ORDER_02|NOT_ORDER 线性表为升序序|线性表为降序|线性表...原创 2018-11-27 13:23:56 · 298 阅读 · 0 评论 -
堆排序算法实现
堆的定义:堆排序:基本思路,将待排序的一维数组看成是一个完全二叉树,将其生成一个堆,由定义可知,根元素必定是最小值(或最大值),将根输出,然后将剩余元素再调整成堆。生成堆的方法:将序列看成一棵完全二叉树,从最后一个非终端结点[n/2]开始,将该点与它的左右子树根结点比较,将最小的移动到该结点位置,一直将该结点移动到使该子树符合堆定义为止,一直遍历到序列第1个结点,就构造好了一个堆。调整...原创 2018-11-27 13:18:20 · 342 阅读 · 0 评论 -
快速排序实现
快速排序算法那思想:气泡排序的一种改进,基本思路是每进行一趟遍历,将序列分割成两个独立的有序的部分,其实就是将整个序列看成两个气泡。在对含有n个元素的数组S的一次快速排序过程中,设置low=0,height=n-1,已S[0]为给定值并赋值给t,从height开始向左遍历并且height自减,找到第一个小于t的数据元素S[height],然后S[low]=S[height],再从low开始向右遍历...原创 2018-11-27 13:14:07 · 119 阅读 · 0 评论 -
读书笔记之《数据结构》---第十二章 文件
本章目录1.有关文件的基本概念2.顺序文件3.索引文件4.ISAM文件和VSAM文件5.直接存取文件(散列文件)6.多关键字文件有关文件的基本概念文件是由大量性质相同的记录组成的集合。文件按记录类型可分为操作系统文件和数据库文件文件按记录长度类型分为定长记录文件和不定长记录文件文件的操作有两类:检索和修改文件的检索有下列3种方式:顺序存取,直接存取,安关键字存取。顺序文件...原创 2018-11-07 17:23:16 · 411 阅读 · 0 评论 -
读书笔记之《数据结构》---第十一章 外部排序
本章目录1.外存信息的存储2.外部排序的方法3.多路归并实现4.置换-选择排序5.最佳归并树外存信息的存储计算机的两种存储器:内存储器,外存储器磁带信息的存储,磁带上相邻的两组字符之间要留一个空白区,称为间隙IRG。外部排序的方法外部排序由两个独立的阶段组成:1.按可用内存大小,将外存上含n个记录的文件分成若干长度为l的子文件或端,这些子文件和段称为归并段或顺串,将这些段...原创 2018-11-07 14:16:37 · 289 阅读 · 0 评论 -
读书笔记之《数据结构》---第十章 内部排序
本章目录1.概述2.插入排序3.快速排序4.选择排序5.归并排序6.基数排序7.各种内部排序方法的比较讨论概述排序的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列排序方法的稳定性:若在排序后的序列中Ri仍领先于Rj,则称所用的排序方法是稳定的,反之若可能使排序后的序列中Rj领先于RI,则称排序方法是不稳定的排序方法分为两类:1.内部排序:待排序记...原创 2018-11-02 18:00:45 · 533 阅读 · 0 评论 -
读书笔记之《数据结构》---第八章 动态存储管理
本章目录1.概述2.可利用空间表及分配方法3.边界表示法4.伙伴系统5.无用单元收集6.存储紧缩概述动态存储管理的基本问题是系统如何应用户提出的“请求”分配内存。可利用空间表及分配方法可利用空间表可以有下列3中不同的结构形式:1.系统运行期间所有用户请求分配的存储量大小相同,分配固定大小的控件给用户2.系统运行期间用户请求分配的存储量有若干大小的规格3.系统运行期间分配给...原创 2018-10-30 17:04:24 · 515 阅读 · 0 评论 -
读书笔记之《数据结构》---第九章 查找
本章目录:1.静态查找表2.动态查找表3.哈希表基本概念:查找表:是由同一类型的数据元素构成的集合静态查找表:只进行“查找”操作的表动态查找表:在查找过程中,对不存在的数据元素进行插入,或从表中删除已存在的数据元素,此类操作的表称为动态查找表关键字:是数据元素某个数据项的值,可以标识一个数据元素,主关键字:可以唯一标识一个记录的关键字次关键字:可以识别若干记录的关键字查找:根...原创 2018-10-31 13:45:01 · 589 阅读 · 0 评论 -
读书笔记之《数据结构》---第一章 绪论
本章目录:什么是数据结构基本概念和术语抽象数据类型的表示与实现算法和算法分析什么是数据结构原创 2018-09-20 17:59:56 · 336 阅读 · 0 评论 -
读书笔记之《数据结构》---第二章 线性表
本章目录线性表的类型定义线性表的顺序表示和实现线性表的链式表示和实现一元多项式的表示及相加线性表的类型定义现行表示n个数据元素的有限序列。抽象类型的线性表定义如下图:书中给出两种算法实现两个线性表的合并:线性表的顺序表示和实现线性表的顺序表示指的是用一组地址连续的存储单元依次存储现行表的数据元素。表中第i个元素的存储位置如下,其中l是每一个元素占的存储单元:顺...原创 2018-09-21 16:23:52 · 421 阅读 · 0 评论 -
读书笔记之《数据结构》---第三章 栈和队列
本章目录栈栈的应用举例栈的递归与实现队列离散事件模型栈栈是限定仅在表尾进行插入或删除操作的线性表。表尾称为栈顶,表头称为栈底栈的特点:后进先出栈的应用举例6. 进行数制转换2.括号匹配检测:进行括号的匹配过程3.行编辑程序功能:例如用户输入字符时,进行退格,就是后进先出的例子4.迷宫求解问题5.表达式求值:创建两个工作栈,一个保存运算符称做OPTR,一个...原创 2018-09-26 16:45:46 · 316 阅读 · 0 评论 -
读书笔记之《数据结构》---第四章 串
本章目录串类型的定义串的表示和实现串的模式匹配算法串操作应用举例串类型的定义串是由零个或多个字符组成的有限序列,一般记为s = ‘a1a2a3…an’。s是串名,单引号内是串的值,n是串的长度,零个字符的串称为空串。求字符串T在字符串S的位置的算法Index算法思想:在主串S中从第i个字符起,取长度和T相等的子串与T相比,若相等,则方位位置i,若不相等,则i增加1,直至S中不...原创 2018-10-09 17:23:33 · 586 阅读 · 0 评论 -
读书笔记之《数据结构》---第五章 数组和广义表
本章目录1.数组的定义2.数组的顺序表示和实现3.矩阵的压缩存储4.广义表定义5.广义表的存储结构6.m元多项式的表示7.广义表的递归算法数组的定义和线性表一样,数组中的所有数据元素都必须属于同一个数据类型。我们可以把二维数组看成是一个定长线性表:它的每一个数据元素也是一个定长线性表。数组的顺序表示和实现对于数组一旦规定了它的维数和各维的长度,便可为它分配存储空间,假设每...原创 2018-10-10 16:25:40 · 411 阅读 · 0 评论 -
读书笔记之《数据结构》---第六章 树和二叉树
本章目录1.树的定义和基本术语2.二叉树3.遍历二叉树和线索树4.树和森林5.树与等价问题6.赫夫曼树及其应用7.回溯法与树的遍历8.树的计数树的定义和基本术语任意一颗非空树中:1.有且仅有一个特定的称为根的结点2.当n>1时,其余结点可分为m个互不相交的子树树的结点包含一个数据元素及若干指向其子树的分支,结点拥有的子树数称为结点的度,度为0的结点称为叶子结点,度不...原创 2018-10-11 14:23:53 · 606 阅读 · 0 评论 -
最短路径迪杰斯特拉算法和弗洛伊德算法实现
迪杰斯特拉算法:矩阵二位数组矩阵T存储顶点vi到各顶点的最短路径值,初始状态为邻接顶点为弧的权值,非邻接顶点为无穷大。数组S用于存储最短路径,存储单元为该弧的前驱顶点的下标和与前驱顶点之间的弧的权值。1.从T中找出一条弧值最小的弧(vi,vj),将该弧加入S中,并根据vj的邻接点vx更新T,如果(vi,vj)+(vj ,vx) < (vi,vx),则更新(vi,vx)为(vi,vj)+(...原创 2018-11-27 13:35:56 · 635 阅读 · 0 评论