数据结构概念相关
一些数据结构相关概念
HMTT
这个作者很懒,什么都没留下…
展开
-
算法性能度量、算法的空间复杂度与时间复杂度概念与分析方法
简单算法分析度量算法效率的方法:事后分析法先将算法实现,然后输入适当的数据运行,测量其时间和空间上的开销。缺点: ①编写程序实现算法将花费较多的时间和精力,②所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。事前分析估算——渐进复杂度算法的时间复杂度:撇开于计算机软硬件有关的因素,影响算法时间代价的最主要因素是问题规模。问题规模是指输入量的多少。基本语句是执行次数与整个算法的执行次数成正比的语言,基本语句对算法运行时间贡献最大,是算法中最重要的操作。这原创 2020-11-18 21:55:38 · 843 阅读 · 0 评论 -
数据结构、抽象数据类型、数据类型、算法的基本概念
数据结构数据是信息的载体,在计算机科学中指所有能输入到计算机中,并能被计算机程序识别和处理的符号集合。可以将数据分为两大类:①整数、实数等数值数据,②文字、声音、图像等非等值数值。数据元素是数据的基本单位,在计算机程序中,通常作为一个整体进行考虑和处理。构成数据元素的不可分割的最小单位称为数据项。数据结构是指相互之间存在一定关系的数据元素之间的集合。按照视点不同,数据结构分为逻辑结构和存储结构。数据的逻辑结构是指数据元素之间逻辑关系的整体,按照数据元素之间的逻辑关系不同,数据结构可以分为以下四类:原创 2020-11-18 21:16:17 · 1383 阅读 · 0 评论 -
数据结构相关博客目录
数据结构相关博客目录数据结构基本概念及简单算法分析线性表单链表的类定义;单链表的插入与删除;带头结点的单链表循环链表的类定义;用循环链表解决约瑟夫问题双向链表的基本操作栈和队列栈的抽象数据类型;栈的链接存储表示队列的抽象数据类型;队列的链接存储表示树与森林二叉树的抽象数据类型二叉树的顺序表示;二叉树的链表存储表示二叉树的中序遍历;前序遍历;后序遍历(递归和非递归实现)不用栈和递归的二叉树中序遍历线索;中序线索化二叉树树的存储表示树与二叉树的转换;森林与二叉树的转换;森林的遍历原创 2020-11-18 20:41:35 · 485 阅读 · 0 评论 -
AOE网与关键路径、关键路径算法
AOE网与关键路径在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动持续的时间,称这样的有向图为边表示活动的网,简称 AOE网(activity on edge network)。AOE网中没有入边的顶点称为源点,没有出边的顶点称为终点。AOE网具有以下两个性质:只有在进入某顶点的各种活动都已经结束,该顶点表示的事件才能发生。只有在某顶点所代表的事件发生后,从该顶点出发的活动才能开始。如果用AOE网络来表示一项工程,那么,仅仅考虑各个活动之间的优先关系还不够,更多原创 2020-11-18 20:07:31 · 2285 阅读 · 0 评论 -
AOV网与拓扑排序、拓扑排序算法
AOV网与拓扑排序AOV网在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,称这样的有向图为顶点表示活动的网,简称 AOV网(activity on vertex network)。AOV网中的弧表示了活动之间存在的某种制约关系。在AOV网中不能出现回路,否则意味着某活动的开始要以自己的完成为先决条件,显然,这是荒谬的。因此判断AOV网所代表的工程是否能顺利进行,即判断它是否存在回路。而测试AOV是否存在回路的方法,就是对AOV网进行拓扑排序。拓扑排序设 G=(V,E)G=(V原创 2020-11-16 20:54:49 · 1712 阅读 · 0 评论 -
最短路径、Dijkstra算法、Floyd算法
最短路径在非网图中,最短路径是指两个顶点之间经历的边数最少的路径,路径上的第一个顶点称为源点,最后一个顶点称为终点。在网图中,最短路径是指两点之间经历的边上的权值之和最少的路径。Dijkstra算法Dijkstra算法用于求单源点路径问题,问题描述如下:给定带权有向图 G=(V,E)G=(V,E)G=(V,E) 和源点 v∈Vv \in Vv∈V,求从v到G中其余各顶点的最短路径。迪杰斯特拉提出了一个按路径长度递增的次序产生最短路径的算法,其基本思想是:设置一个集合 S 存放已经找到最短路径的顶点原创 2020-11-14 22:00:39 · 332 阅读 · 0 评论 -
最小生成树、Prim算法、Kruskal算法
最小生成树设 G=(V,E)G = (V,E)G=(V,E) 是一个无向连通图,生成树上各边的权值之和称为该生成树的代价,在G的所有生成树中,代价最小的生成树叫最小生成树。MST性质最小生成树具有MST性质:假设 G=(V,E)G=(V,E)G=(V,E) 是一个无向连通网,U是顶点集合V的一个非空子集。若 (u,v)(u,v)(u,v)是一条具有最小权值的边,其中u∈U,v∈V−Uu \in U, v \in V-Uu∈U,v∈V−U,则必存在一棵包含边 (u,v)(u,v)(u,v) 的最小生成树原创 2020-11-12 22:24:48 · 268 阅读 · 2 评论 -
哈夫曼树及哈夫曼编码、哈夫曼算法
哈夫曼树及哈夫曼编码、哈夫曼算法哈夫曼树相关概念哈夫曼树也称最优二叉树在实际中有着广泛的应用。下面有几个相关概念。叶子结点的权值叶子节点的权值是对叶子结点赋予一个有意义的数值量。二叉树带权路径长度设二叉树具有n个带权的叶子结点,从根结点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和叫做二叉树的带权路径长度,记为:WLP=∑k=1nwklkWLP = \sum\limits^n_{k=1}w_kl_kWLP=k=1∑nwklk,其中,wkw_kwk为第k个叶子结点的权值,lkl_kl原创 2020-11-12 20:09:49 · 1187 阅读 · 0 评论 -
树、森林与二叉树的转换,森林的遍历
树、森林与二叉树的转换从树的孩子兄弟表示法和二叉树的二叉链表示法可以看出,树的孩子兄弟表示法实质上是二叉树的二叉链表存储形式,第一个孩子指针和有兄弟指针分别相当于二叉链表的左孩子指针和右孩子指针。所以从物理结构上看,树的右孩子兄弟表示法和二叉树的二叉链表是相同的,只是解释不同。如树转换为二叉树将一棵树转换为二叉树的方法是:加线——树中所有相邻兄弟之间加一条线去线——对树中的每个结点,只保留它与第一个孩子结点之间的连线,删去它与其他孩子之间的连线层次调整——以根结点为中心,将树顺时针转动一定的原创 2020-11-10 21:36:08 · 2449 阅读 · 0 评论 -
树的存储结构
树的存储结构双亲表示法由树的定义可知,树中的每个节点都有且仅有一个双亲结点。根据这一特性,可以用一维数组来存储树的各个结点(一般按照层序存储),数组中的一个元素对应树中的一个结点,数组元素包括树中结点的数据信息以及该结点的双亲在数组中的下标。有①双亲表示法和②带有兄弟的双亲表示法两种常用结构。孩子表示法树的孩子表示法是一种基于链表的存储方式,主要形式有两种①多重链表表示法、②孩子链表表示法多重链表表示法:其中,首位存的是当前结点的值,后面是存孩子的地址,长度为树的度。孩子链表表示法:双原创 2020-11-10 21:09:05 · 458 阅读 · 1 评论 -
线索二叉树、中序线索二叉树的创建和遍历
线索二叉树按照某种遍历次序对二叉树进行遍历,可以把二叉树中的所有结点排成一个线性序列。在具体应用中,有时需要访问二叉树中的结点在某种遍历序列中的前驱和后继,此时,在存储结构中应保存结点在某种遍历序列中的前驱和后继。这些指向前驱和后继结点的指针称为线索,加上线索的二叉树称为线索二叉树,相应地,加上线索的二叉链表叫做线索链表。线索链表结构如下:字段:ltag, lchild, value, rchild, rtagltag={0,lchild指向该结点的左孩子1,lchild指向该节点的前驱rtag={0原创 2020-11-10 20:49:39 · 5923 阅读 · 2 评论 -
散列——Hash表
散列的概念散列技术、散列表、散列函数、散列地址所谓的查找实际上就是要确定关键码等于给定值的记录在查找结构中的存储位置。理想情况就是不经过任何比较,直接便能得到待查记录的存储位置,那就必须在记录的存储位置与它的关键码之间确立一个对应的关系HHH,使得每个关键码 key 和唯一的存储位置 H(key)H(key)H(key) 相对应。在查找时,根据这个确定的对应关系找到给定值 kkk 的映射 H(k)H(k)H(k) ,若集合中存在这个记录,则必定在 H(k)H(k)H(k) 位置上,这种查找技术叫做 散原创 2020-11-08 21:18:13 · 133 阅读 · 0 评论 -
平衡二叉树——AVL树
平衡二叉树平衡二叉树的定义平衡二叉树是一棵空的二叉排序树,或者是具有下列性质的二叉排序树根节点的左子树和右子树的深度最多相差1根节点的左子树和右子树也是平衡二叉树平衡因子结点的平衡因子是该节点左子树和右子树的深度之差,如下图,每个结点里所注的数字是该节点的平衡因子最小不平衡子树最小不平衡子树是指在平衡二叉树的构造过程中,以距离插入结点最近的、且平衡因子绝对值大于1的结点为根的子树。平衡化旋转LL型RR型LR型RL平衡树创建例子按{20,35,40,15,30,25原创 2020-11-08 20:23:39 · 191 阅读 · 0 评论