![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 72
小旺不正经
阿里云专家博主、51CTO专家博主
展开
-
数据结构-散列表
列表(Hash Table),又称哈希表,是一种数据结构,特点是:数据元素的关键字与其存储地址直接相关例:有一堆数据元素,关键字分别为{19,14,23,1,68,20,84,27,55,11,10,79},散列函数H(key)=key%13若不同的关键字通过散列函数映射到同一个值,则称它们为“同义词”通过散列函数确定的位置已经存放了其他元素,则称这种情况为“冲突”用拉链法(又称链接法、链地址法)解决‘冲突’:把所有“同义词”存储在一个链表中。原创 2023-11-14 10:07:58 · 317 阅读 · 0 评论 -
B树与B+树
B树,又称多路平衡查找树,B树中所有结点的孩子个数的最大值称为B树的阶,通常用m表示。一颗m阶B树或为空树,或为满足如下特征的m叉树。新元素一定是插入到最底层“终端节点”,用‘查找’来确定插入位置。原创 2023-11-13 15:03:28 · 287 阅读 · 0 评论 -
数据结构-数型查找
红黑树是二叉排序树->左子树结点值原创 2023-11-13 15:02:32 · 536 阅读 · 0 评论 -
顺序查找和折半查找
原因:最终low左边一定小于目标关键字,high右边一定大于目标关键字。若索引表中不包含目标关键字,则折半查找索引表最终停在low>high,要在low所指分块中查找。若索引表中不包含目标关键字,则折半查找索引表最终停在low>high,要在low所指分块中查找。判定树结点关键字:左原创 2023-11-12 16:17:32 · 586 阅读 · 0 评论 -
查找的基本概念
平均查找长度(ASL,Average Search Length)-- 所有查找过程中进行关键字的比较次数的平均值。关键字–数据元素中唯一标识该元素的某个数据项的值,使用基于关键字的查找,查找结果应该是唯一的。查找表(查找结构)–用于查找的数据集合称为查找表,它由同一类型的数据元素(或记录)组成。也要进行操作2–动态查找表(除了查找速度,也要关注插入删除操作是否方便实现)查找–在数据集合中寻找满足某种条件的数据元素的过程称为查找。查找长度–在查找运算中,需要对比关键字的次数称为查找长度。原创 2023-11-12 16:15:59 · 78 阅读 · 0 评论 -
数据结构-图的应用
设R为G的所有生成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的最小生成树(Minimum-Spanning-Tree, MST)。可能有多条关键路径,只提高一条关键路径上的关键活动速度并不能缩短整个工程的工期,只有加快那些包括在所有关键路径上的关键活动 才能达到缩短工期的目的。从源点到汇点的有向路径可能有多条,所有路径中,具有最大路径长度的路径称为关键路径,而把关键路径上的活动称为关键活动。完成整个工程的最短时间就是关键路径的长度,若关键活动不能按时完成,则整个工程的完成时间就会延长。原创 2023-11-10 18:41:11 · 397 阅读 · 0 评论 -
数据结构-图的遍历
由于邻接表的表示方式不唯一,因此基于邻接表的广度优先生成树也不唯一。树的遍历:不存在“回路”,搜索相邻的结点时,不可能搜到已经访问过的结点。同一个图的邻接矩阵表示方式唯一,因此广度优先遍历序列唯一。同一个图邻接表表示方式不唯一,因此广度优先遍历序列不唯一。同一个图的邻接矩阵表示方式唯一,因此深度优先遍历序列唯一。同一个图邻接表表示方式不唯一,因此深度优先遍历序列不唯一。对于强连通图,从任一结点出发都只需调用1次BFS/DFS。图的遍历:搜索相邻的顶点时,有可能搜到已经访问过的顶点。原创 2023-11-10 18:40:16 · 633 阅读 · 0 评论 -
图的基本操作
FirstNeighbor找到后的下一个。原创 2023-11-09 20:25:45 · 79 阅读 · 0 评论 -
数据结构-图的存储
无向图的邻接矩阵是对称矩阵,可以压缩存储(只存储上三角区/下三角区)空间复杂度:O(|V|的2次方)–只和顶点数相关,和实际的边数无关。邻接矩阵法求顶点的度/出度/入度的时间复杂度为O(|v|)第i个顶点的度=第i行(或第i列)的非零元素个数。第i个结点的度=第i行、第i列的非零元素个数之和。第i个结点的出度=第i行的非零元素个数。第i个结点的入度=第i列的非零元素个数。注意:邻接多重表只适用于存储无向图。空间复杂度:O(|V|+|E|)空间复杂度:O(|V|+|E|)十字链表只用于存储有向图。原创 2023-11-09 14:17:35 · 242 阅读 · 0 评论 -
图的基本概念
图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。若V={V1,V2,…,Vn},则用|V|表示图G中顶点的个数,也称图G的阶,E={(u,v)|u属于V,v属于V},用|E|表示图G中边的条数注意:线性表可以是空表,数可以是空树,但图不可以是空,即V一定是非空集。原创 2023-05-15 21:00:18 · 447 阅读 · 1 评论 -
二叉搜索树
二叉搜索树(Binary Search Tree)是二叉树的一种,是应用非常广泛的一种二叉树,英文简称为BST又被称为:二叉查找树、二叉排序树任意一个节点的值都大于其左子树所有节点的值任意一个节点的值都小于其右子树所有节点的值它的左右子树也是一颗二叉搜索树二叉搜索树可以大大提高搜索数据的效率二叉搜索树存储的元素必须具备可比较性二叉搜索树的接口设计添加步骤。原创 2022-10-17 00:19:20 · 352 阅读 · 0 评论 -
数据结构-串
子串:串中任意个连续的字符组成的子序列主串:包含子串的串字符在主串中的位置:字符在串中的序号子串在主串中的位置:子串的第一个字符在主串中的位置串是一种特殊的线性表,数据元素之间呈线性关系串的数据对象限定为字符集(如中文字符、英文字符、数字字符、标点字符等)串的基本操作,如增删改查等通常以子串为操作对象StrAssign(&T,chars):赋值操作。把串T赋值为charsStrCopy(&T,S):复杂操作。由串S复制得到串TStrEmpty(S):判空操作。原创 2022-10-12 00:45:00 · 1589 阅读 · 0 评论 -
数据结构-栈和队列
栈是只允许在一端进行插入或删除操作的线性表InitStack(&S):初始化栈。构建一个空栈S,分配内存空间DestroyStack(&L):销毁栈。销毁并释放栈S所占用的内存空间Push(&S,x):进栈,若栈S未满,则将x加入使之成为新栈顶Pop(&S,&x):出栈,若栈S非空,则弹出栈顶元素,并用x返回GetTop(S,&x):读栈顶元素,若栈S非空,则用x返回栈顶元素其他常用操作:StackEmpty(S):判断一个栈S是否为空。若S为空,则返回ture,否则返回false。原创 2022-10-11 15:20:51 · 776 阅读 · 0 评论 -
数据结构-链表(java)
有时候为了让代码更加精简,统一所有节点的处理逻辑,可以在最前面增加一个虚拟的头节点(不存储数据)E remove():删除current指向的节点,删除成功后让current指向下一个节点。动态数组:开辟、销毁内存空间的次数相对较少,但可能造成内存空间浪费(可通过缩容解决)双向链表:开辟、销毁内存空间的次数相对较多,但不会造成内存空间的浪费。如果有频繁的(在任意位置)添加、删除操作,建议选择使用双向链表。如果频繁在尾部进行添加、删除操作,动态数组、双向链表均可选择。使用双向链表可以提升链表的综合性能。原创 2022-09-17 15:08:16 · 302 阅读 · 0 评论 -
数据结构-栈
栈是一种特殊的线性表,只能在一端进行操作。原创 2022-09-17 15:06:38 · 208 阅读 · 0 评论 -
普通二叉树
一颗有n个节点的完全二叉树(n>0),从上到下、从左到右对节点从1开始进行编号,对任意第i个节点。一颗有n个节点的完全二叉树(n>0),从上到下、从左到右对节点从0开始进行编号,对任意第i个节点。满二叉树:所有节点的度都要么为0,要么为2。完全二叉树:叶子节点只会出现最后2层,且最后1层的叶子结点都靠左对齐。真二叉树:所有节点的度都要么为0,要么为2。同样节点数量的二叉树,完全二叉树的高度最小。度为1的节点要么是1个,要么是0个。第i层的节点数量:2的i-1次方。叶子节点数量:2的h-1次方。原创 2022-09-17 15:04:08 · 525 阅读 · 0 评论 -
数据结构-线性表
用顺序存储的方式实现线性表顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现静态分配动态分配顺序表的特点随机访问,即可以在O(1)时间内找到第i个元素存储密度高,每个节点只存储数据元素拓展容量不方便插入、删除操作不方便,需要移动大量元素单链表优点:不要求大片连续空间,改变容量方便缺点:不可随机存取,要耗费一定空间存放指针不带头结点的单链表带头结点的单链表。原创 2022-08-21 21:16:57 · 814 阅读 · 0 评论 -
数据结构概述
集合:各个元素同属一个集合,别无其他关系线性结构:数据元素之间是一对一的关系。除了第一个元素,所有元素都用唯一前驱;除了最后一个元素,所有元素都有唯一后继树形结构:数据元素之间是一对多的关系网状结构(图结构):数据元素之间是多对多的关系。...原创 2022-08-08 16:09:36 · 106 阅读 · 0 评论 -
数据结构笔记(持续更新)
线性表是一个序列数据元素之间是有序的数据元素之间是一对一的关系有限性线性表的数据元素个数是有限的0个数据元素的有限序列被称为空表常见操作:创建和初始化查找插入删除清空ADT 线性表(SequenceList)Data1.线性表数据元素是一个集合{a1,a2,a3,…an},数据元素的类型DataType(int,char,自定义)2.(前驱)除了第一个元素a1外,...原创 2020-01-20 22:52:56 · 416 阅读 · 0 评论