![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
pudding*
代码打了吗
展开
-
查找——二叉排序树
查找列表:由同一类型的数据元素组成的集合。关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素。键值:关键码的值。主关键码:可以唯一地标识一个记录的关键码。次关键码:不能唯一地标识一个记录的关键码。查找 :在具有相同类型的记录构成的集合中找出满足给定条件的记录。查找的结果 :若在查找集合中找到了与给定值相匹配的记录,则称查找成功;否则,称查找失败。静态查找 :不涉及插...原创 2019-12-02 23:19:45 · 383 阅读 · 0 评论 -
最短路径
在非网图中,最短路径是指两顶点之间经历的边数最少的路径。在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径。最短路径问题单源点到其他顶点的最短路径Dijkstra方法,O(n2)任意一对顶点之间的最短路径Floyed方法,O(n3)Dijkstra算法基本思想:1、设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,2、对vi∈V-S,假设从源点v到v...原创 2019-12-02 22:53:11 · 445 阅读 · 0 评论 -
最小生成树
生成树的代价:设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。最小生成树:在图G所有生成树中,代价最小的生成树称为最小生成树。MST( minimum spanning tree)性质假设G=(V, E)是一个无向连通网,U是顶点集V的一个非空子集。若(u, v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u, v)的最小生成树。MST性...原创 2019-12-02 22:27:06 · 591 阅读 · 0 评论 -
图的存储结构及实现
邻接矩阵(数组表示法)基本思想: 用一个一维数组存储图中顶点的信息,用一个二维数组(称为邻接矩阵)存储图中各顶点之间的邻接关系。无向图的邻接矩阵1、无向图的邻接矩阵的特点:主对角线为0且一定是对称矩阵。2、如何求顶点i的度?邻接矩阵的第i行(或第i列)非零元素的个数。3、如何判断顶点 i 和 j 之间是否存在边?测试邻接矩阵中相应位置的元素arc[i][j]是否为1。4、如何求顶...原创 2019-12-02 22:00:46 · 727 阅读 · 0 评论 -
图的逻辑结构
图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E),其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。在线性表中,元素个数可以为零,称为空表;在树中,结点个数可以为零,称为空树;在图中,顶点个数不能为零,但可以没有边。若顶点vi和vj之间的边没有方向,则称这条边为无向边,表示为(v...原创 2019-12-02 21:30:59 · 2790 阅读 · 0 评论 -
哈夫曼树及哈夫曼编码
一、相关概念叶子结点的权值:对叶子结点赋予的一个有意义的数值量。二叉树的带权路径长度:设二叉树具有n个带权值的叶子结点,从根结点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和。 记为:...原创 2019-12-02 21:05:36 · 1031 阅读 · 0 评论 -
二叉树
一、二叉树的逻辑结构二叉树的定义二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点:⑴ 每个结点最多有两棵子树;⑵ 二叉树是有序的,其次序不能任意颠倒。注意:二叉树和树是两种树结构。特殊的二叉树斜树所有结点都只有左子树的二叉树称为左斜树;所有结点都只有右子树的二叉树...原创 2019-11-13 21:28:00 · 563 阅读 · 0 评论 -
树
一、树的逻辑结构树的定义树:n(n≥0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:⑴ 有且仅有一个特定的称为根的结点;⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。树的定义是采用递归方法树的基本术语结点的度:结点所拥有的子树的个数。树的度:树中各...原创 2019-11-13 20:09:19 · 153 阅读 · 0 评论 -
多维数组
多维数组:线性表中的数据元素可以是线性表,但所有元素的类型相同。数组定义:数组是由一组类型相同的数据元素构成的有序集合,每个元素受n(n≥1)个线性关系的约束,并称该数组为 n 维数组。元素本身可以具有某种结构,属于同一数据类型;数组是一个具有固定格式和数量的数据集合。二维数组是数据元素为线性表的线性表。基本操作:⑴ 存取:给定一组下标,读出对应的数组元素;⑵ 修改:给定一组下标,存...原创 2019-11-12 21:29:34 · 297 阅读 · 0 评论 -
字符串
串的逻辑结构串:零个或多个字符组成的有限序列。串长度:串中所包含的字符个数。空串:长度为0的串,记为:" “。非空串通常记为:S=” s1 s2 …… sn " 其中:S是串名,双引号是定界符,双引号引起来的部分是串值 ,si(1≤i≤n)是一个任意字符。子串:串中任意个连续的字符组成的子序列。主串:包含子串的串。子串的位置:子串的第一个字符在主串中的序号。串的存储结构顺序串:用...原创 2019-11-12 18:38:22 · 119 阅读 · 0 评论 -
特殊线性表——队列
定义:只允许在一端进行插入操作,而另一端进行删除操作的线性表。空队列:不含任何数据元素的队列。允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。队列的操作特性:先进先出。队列的顺序存储结构及实现顺序队列:队列的顺序存储结构1.队头指针指向队列中的第一个元素之前的元素,队尾指针指向队列中的最后一个元素。2、队头指针指向队列中的第一个元素,队尾指针指向队列中的...原创 2019-11-11 21:44:34 · 211 阅读 · 0 评论 -
特殊线性表——栈
定义:限定仅在表尾进行插入和删除操作的线性表。操作特性:后进先出。注意:栈只是对表插入和删除操作的位置进行了限制,并没有限定插入和删除操作进行的时间。栈的顺序存储结构及实现确定用数组的哪一端表示栈底,附设指针top指示栈顶元素在数组中的位置。进栈:top加1出栈:top减1栈空:top= -1栈满:top= MAX_SIZE-1顺序栈类的声明const int ...原创 2019-11-11 21:32:51 · 118 阅读 · 0 评论 -
线性表的链式存储结构及实现——双链表
双链表就是在单链表的每个结点中增加一个指向前驱的指针 。结点结构template <class T>struct DNode{ T data; DNode<T> *llink; DNode<T> *rlink;}; 双向链表的实现template <class T>class DoubleLink { priva...原创 2019-11-04 20:59:12 · 181 阅读 · 0 评论 -
线性表的链式存储结构及实现——循环链表
将单链表或者双链表的头尾结点链接起来,就是一个循环链表。特点: 1. 首尾相接的链表。可以从任一节点出发,访问链表中的所有节点。尾结点的特点: q->next==first循环链表的定义在这里插入代码片...原创 2019-11-04 20:49:51 · 186 阅读 · 0 评论 -
线性表的链式存储结构及实现——单链表
单链表是用一组任意的存储单元存放线性表的元素,这组存储单元可以连续也可以不连续。链表结点数据类型的定义template <typename T>struct Node { T data; Node<T> *next; //此处<T>可以省略}; 带头结点的单链表头结点:如果链表有头节点,则链式结构中的第一个节点称为头结...原创 2019-11-04 20:40:30 · 485 阅读 · 0 评论 -
顺序表
线性表是零个或多个具有相同类型的数据元素的有限序列。数据元素的个数定义为线性表的 长度 。长度等于零时称为空表。一个非空表通常记为 L = ( a 1 , a 2 ,……, a n )其中, a i ( 1 ≤ i ≤ n )称为数据元素,下标 i 表示该元素在线性表中的位置或序号, 称元素 a i 位于表的第 i 个位置,或称 a i 是表中的第 i 个元素。顺序表线性表的顺序存储...原创 2019-09-23 21:37:40 · 144 阅读 · 0 评论