数据结构
灬Sunnnnn
不积跬步,无以至千里.不积小流,无以成江海
展开
-
哈希表
前言 当我们在编程过程中,往往需要对线性表进行查找操作。在顺序表中查找时,需要从表头开始,依次遍历比较a[i]与key的值是否相等,直到相等才返回索引i;在有序表中查找时,我们经常使用的是二分查找,通过比较key与a[i]的大小来折半查找,直到相等时才返回索引i。最终通过索引找到我们要找的元素。 但是,这两种方法的效率都依赖于查找中比较的次数。我们有一种想法,能不能不经过比较,而是直接...转载 2020-03-29 22:34:58 · 686 阅读 · 0 评论 -
平衡二叉树、B树、B+树
1、平衡二叉树概念平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构;特点:平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程有以下规则:(1)非叶子节点只能允许最多两个子节点存在。(2)每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节...转载 2020-03-29 22:08:28 · 518 阅读 · 0 评论 -
数据结构-堆
1.堆堆通常是一个可以被看做是一颗完全二叉树的数组对象。性质:1)堆中某个节点的值总是不大于或不小于其父节点的值;2)堆总是一颗完全二叉树;堆分为两种情况,有最大堆和最小堆。将根节点最大的堆叫做大根堆,根节点最小的堆叫做小根堆。可以看见每个父节点的元素一定比子节点的元素大或者小。但是兄弟结点的大小则没有规定谁大谁小。小根堆大根堆2.相关算法数组下标从1...原创 2019-11-14 11:38:29 · 257 阅读 · 0 评论 -
数据结构-红黑树
1.定义红黑树是自平衡的二叉查找树。2.性质1)每个节点要么是黑色,要么是红色。2)根节点为黑色。3)每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)。4)从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。这些约束强制了红黑树的关键性质: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。结果是这个树大致上是...原创 2019-10-31 18:22:13 · 134 阅读 · 0 评论 -
数据结构-线索二叉树
1.定义在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(前序、中序、后序或层序)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。2.本质二叉树的遍历实质上是对一个非线性结构进行线性化的过程,它使得每个结点(除第一个和最后一个)在这些线性序列中有且仅有一个直接前驱和直接后继。但在二叉链表存储中,查找其左、右孩子是方便的,其前驱和后继只有在遍历中...原创 2019-10-25 17:06:39 · 857 阅读 · 0 评论 -
数据结构-平衡二叉树
1.定义平衡二叉树又称为AVL树,或者为空树,或者具有以下性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差的绝对值不超过1。 若将二叉树结点的平衡因子定义为该结点左子树的高度减去其右子树的高度,则平衡二叉树上所有结点的平衡因子只可能是-1、0、1。 只要树上有一个结点的平衡因子的绝对值大于1,则该二叉树就不平衡。最小不平衡树:是指离插入结点最近且以平衡...原创 2019-10-25 15:22:52 · 608 阅读 · 0 评论 -
数据结构-二叉排序树
1.定义二叉排序树又称为二叉查找树,它或者是一颗空树,或者有以下性质的树:若它的左子树非空,则左子树上所有结点的值均小于根结点的值 若它的右子树非空,则右子树上所有结点的值均大于根结点的值 左、右子树本身是二叉排序树2.查找过程因为二叉排序树的左子树上所有结点的关键字均小于根结点的关键字,右子树上所有结点的关键字均大于根结点的关键字,所以在二叉排序树上进行查找的过程为:...原创 2019-10-25 10:39:31 · 8066 阅读 · 0 评论 -
数据结构-静态查找表查找方法
1.顺序查找从表的一端开始,逐个将记录的关键字和给定值比较,若找到一个记录的关键字与给定值相等,则查找成功;若整个表中记录均比较过,仍未找到关键字等于给定值的记录,则查找失败。缺点:查找表的长度越长,查找效率越低。优点:简单、适应面广,对查找表结构没有要求,对顺序存储和链式存储都适用。2.折半查找设查找表元素存储在一维数组r[1,…,n]中,在表中的元素已经按关键字递增...原创 2019-10-24 18:53:10 · 4052 阅读 · 0 评论 -
数据结构-树
1.树的定义 树是n(n>=0)个结点的有限集合,当n=0时称为空树。在任一非空树(n>0)中,有且仅有一个称为根的结点;其余结点可分为m(m>=0)个互不相交的有限子集T1,T2…,Tm, 其中,每个Ti又是一颗树,并且称为根结点的子树;树的定义是递归的,它表明了树本身的固有特性,也就是一棵树由若干棵子树构成,而子树又由更小的子树构成。2.树的基本概念...原创 2019-10-22 17:10:24 · 415 阅读 · 0 评论 -
数据结构-串
1.串的定义串是仅有字符构成的有限序列,是一种线性表。一般记为S='a1a2...an',其中,S是串名,单引号括起来的字符序列是是串值。2.串的几个基本概念1)空串:长度为零的串。2)空格串:由一个或多个空格组成的串,空格也是一个字符。3)子串:由串中任意长度的连续字符构成的序列,含有子串的串称为主串。子串在主串中的位置是指子串首次出现时,该子串的第一个字符在主串中...原创 2019-10-15 22:29:14 · 820 阅读 · 0 评论 -
数据结构-线性表
1.线性表的定义线性表是最简单、最基本的一种线性结构,通常采用顺序存储和链式存储,主要的基本操作是插入、删除和查找。1)、一个线性表是n(n>=0)个元素的有限序列2)、非空线性表中,除第一个元素外,序列中每个元素都只有一个直接前驱,除最后一个元素外,序列中每个元素均只有一个直接后继。2.线性表的存储结构1)、顺序存储:用一组地址连续的存储单元依次存储线性表中的...原创 2019-10-08 23:14:27 · 549 阅读 · 0 评论 -
数据结构-栈
1.栈的定义 栈只能通过访问它的一端来实现数据存储和检索的一种线性数据结构,栈又称为后进先出的线性表,在栈中进行插入和删除的一端称为栈顶,另一端称为栈底,不含数据元素的栈称为空栈。链栈图2.栈的基本运算 栈的链式存储:用链表作为存储结构的栈称为链栈。由于栈中元素的插入和删除仅在栈顶一端进行,因此不必另外设置头指针,链表的头指针就是栈顶指针。①入栈ty...原创 2019-10-09 22:18:18 · 200 阅读 · 0 评论 -
数据结构-队列
1)队列的定义 队列是一种先进先出的线性表,它允许在表的一端进行插入,在表的另一端进入删除,允许插入元素的一端称为队尾(Rear),允许删除元素的一端称为队头(Front)。2)队列的存储结构队列的顺序存储:队列的顺序存储结构又称为顺序队列,它也是利用一组地址连续的存储单元存放队列中的元素。由于队列中元素插入和删除限定在表的两端进行,因此设置队头指针和队尾指针,分...原创 2019-10-11 18:57:46 · 306 阅读 · 0 评论