![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 75
本科数据结构难点,知识点总结复习
lseaJK
计算机科学与技术专业本科生
展开
-
无用单元收集(算法8.3)
严氏数据结构书中图8.11描述比较精简,我就没有看懂,找到一篇分析非常全的解释。无用单元收集(垃圾回收机制)大致思路t=NULL;p=GL;finished=false;while(!finished){ while(p->mark==0){//访问到原子结点 p->mark=1; MarkHead(p);//若表头是未经遍历的非空子表,则修改指针记录路径,且p指向表头;否则p不变 } q=p->p.pt; if(q&原创 2021-09-06 15:45:18 · 211 阅读 · 0 评论 -
8.4 伙伴系统分配与回收
8.4 伙伴系统可利用空间表的结构分配算法可利用空间表的结构#define m 16typedef struct WORD_b{ WORD_b *llink; int tag; int kval;//块大小,值为2的幂次k WORD_b *rlink; OtherType other;}WORD_b,head;//WORD内存字类型,结点的第一个字也称为headtypedef struct HeadNode{ int nodesize;//链表的的原创 2021-09-05 19:52:39 · 1011 阅读 · 0 评论 -
边界标识法——分配和回收
8.3 边界标识法预备知识边界标识法边界标识法结点结构首次拟合法分配回收算法预备知识(1) 首次拟合 从表头指针查找,找到的第一个大小不小于m的结点的一部分分配给用户。分配时需要查找可利用空间表,回收时直接插到表头即可。(2) 最佳拟合 将可利用空间表中一个不小于m且最接近m的空闲块的一部分分配给用户,推荐按结点从小到大排序,回收时把释放的空闲块插入到合适的位置上。最佳拟合法适用于请求分配的内存大小范围较广的系统。最佳拟合无论分配回收都需要查找可利用空间表,因此最费时间。(3) 最差拟原创 2021-09-05 17:13:39 · 1444 阅读 · 0 评论 -
数据结构课程目录
今天线上考试,虽然准备了很多,但是还是缺乏迁移能力,果不其然就炸了,明年再见。第六章 树和森林第七章 图第八章 查找第九章 排序习题原创 2020-06-29 20:28:18 · 166 阅读 · 0 评论 -
数据结构 树、图、查找、排序习题整合
数据结构第六章 树和森林第七章 图第八章 查找第九章 排序第六章 树和森林二叉树的第k层节点数最多为(2k-1)。将森林F 转换为对应的二叉树T,F中叶结点的个数等于()【答】二叉树变森林方法为右孩子A变兄弟节点。若该孩子节点A有左孩子,则带着左孩子一起分离形成独立的树。若无左孩子,则成为孤立节点。若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。在这种存储结构中,n个结点的二叉树共有(2n)个指针域,其中有(n-1)个指针域是存放了地址,有(n+1)个指针是空指针原创 2020-06-29 20:24:57 · 3173 阅读 · 1 评论 -
等价类及其表示——Union()函数的三次改进
树和森林6.8 等价类及其表示6.8.1 等价关系与等价类6.8.2 并查集Union()函数为了提高效率进行三次改进:6.8 等价类及其表示6.8.1 等价关系与等价类等价关系等价关系是一个自反的、对称的和传递的关系。等价类一般地,一个集合S中的所有对象可以通过价关系划分为m个互不相交的子集S1,S2, …,Sm,即对于S中的任何两个元素x和y(x、y∈S),如果x和y是等价的(x≡y),则x和y被划分在同一个子集S中(i=1,2…,m)。这些子集被称为等价类。利用等价关系把集合S划分原创 2020-06-29 20:29:42 · 968 阅读 · 0 评论 -
树和森林的实现——树的四种存储结构、树、森林和二叉树的转换
树和森林6.7 树和森林的实现6.7.1 树的存储结构1.双亲表示法2.孩子表示法3.双亲-孩子表示法4. 孩子-兄弟表示法总结6.7.2 树、森林和二叉树的转换1. 树转化为二叉树2. 森林转化为二叉树3. 二叉树转化为森林6.7.3 树的遍历小结6.7.4 森林的遍历小结6.7 树和森林的实现6.7.1 树的存储结构1.双亲表示法由树的定义可以知道,在树中除根结点外的每个结点都有唯一的一个双亲结点,因此,可以考虑用一组连续的存储空间存储树中的每一个结点,数组中的一个元素表示为树中的一个结点。原创 2020-06-29 20:29:55 · 6556 阅读 · 0 评论 -
数据结构 第六章 树和森林目录
1.具有 10个叶结点的二叉树中有 ( )个度为2的结点。A.8 B.9 C.10 D.11【答】B假设在二叉树中度为0的结点有n0个,度为1的结点有n1个,度为2的结点有n2个,则总的结点数n=n0+n1+n2;总的分支数B=n1+2n2。又因为B=n-1,所以在二叉树中 n2=n0-1。设给定权值总数有n个,其哈夫曼树的结点总数为()。A.不确定 B. 2n C. 2n+1D. 2n-1【答】D已知叶子结点数为n,则根据上题得到度为2的结点数为n-1。而在哈夫曼树中只原创 2020-06-29 20:20:37 · 200 阅读 · 0 评论 -
数据结构 第九章 排序目录
排序9.1 基础知识9.2交换排序9.3插入排序所谓排序(Sorting),就是对数据元素集合建立某种有序排列的过程。排序在计算机软件系统设计中占有相当重要的地位,特别是在事务处理系统中,需要经常对有关的数据排序,以便提高检索等操作的效串。9.1 基础知识排序:设含有n个数据元素的数据表为:{R[0],R[1],…,R[n-1]},其相应的关键字序列为:{K[0],K[1],…,K[n-1]}。所谓排序,是确定0,1,…,n-1的一种排列p0,p1,…pn-1,使各关键字满足如下的递增(或递减)关系原创 2020-06-29 20:24:06 · 237 阅读 · 0 评论 -
排序——各种排序方法的选择和使用
排序9.7 各种排序方法的选择和使用9.7 各种排序方法的选择和使用这些排序方法方法各有其优缺点,各有其适用的情况,无法笼统地说哪种方法最好,只能说在某种情况下哪种方法更适用。因此,在实际应用中,应根据不同的情况选择不同的算法。在选择排序方法时,主要需考虑以下因素。1)数据表的大小,即待排序数据元素的个数。2)关键字的分布情况。3)对排序的稳定性要求。考虑上述因素,在此提出下列建议供参考。1)若数据表的长度较小(如n<50)时,可采用简单的排序方法(如直接插入排序或选择排序)。但要注原创 2020-06-29 20:31:37 · 2045 阅读 · 1 评论 -
基数排序——多关键字排序(MSD/LSD)以及链式基数排序
排序9.6 基数排序9.6.1 多关键字排序9.6.2 链式基数排序9.6 基数排序基数排序又被称为桶排序。与前面介绍的几种排序方法相比较,基数排序和它们有明显的不同。前面所介绍的排序方法都是建立在对数据元素关键字进行比较的基础上,所以可以称为基于比较的排排序;而基数排序首先将待排序数据元素依次“分配”到不同的桶里,然后再把各桶中的数据元素“收集”到一起。通过使用对多关键字进行排序的这种**“分配”和“收集”的方法,基数排序实现对单关键字**进行排序。9.6.1 多关键字排序一般情况下,假定数据表原创 2020-06-29 20:30:06 · 5946 阅读 · 0 评论 -
归并排序——归并、两路归并递归及非递归
排序9.5 归并排序9.5.1 归并9.5.2 两路归并排序9.5.3 递归的归并排序总结9.5 归并排序9.5.1 归并所谓归并,就是将两个或两个以上的有序表合并成一个新的有序表。有两个已经排好序的有序表A[1]~ A[n]和 B[1]~ B[m]通过归并把它们合成一个有序表C[1]~C[m+n]。这种归并方法称为两路归并。其基本思想是:设有两个有序表A和B,其数据元素个数(表长)分别为n和m,变最i和j 分别是表A和表B的当前检测指针;设表C是归并后的新有序表,变量k是它的当前存放指针。开始原创 2020-06-29 20:31:30 · 1201 阅读 · 0 评论 -
选择排序——直接排序(顺序和链表)、锦标赛排序和堆排序要点和比较
排序9.4 选择排序9.4.1 简单选择排序1.顺序表上的简单排序2.链表上的简单选择排序小结9.4.2 锦标赛排序9.4.3 堆排序总结9.4 选择排序选择排序的基本思想是:第一趟在有n个数据元素的数据表中选出关键字最小的数据元素,然后在剩下n-1个数据元素中再选取关键字最小(整个数据表中次小)的数据元素,如此重复,每一趟(如第i趟,i=1,2,…,n-1)总是在当前剩下的n-i+1个待排序数据元素中选出关键字最小的数据元素,作为有数据元素序列的第i个数据元素。等到第n-1趟选择结束,待排序数据元素仅原创 2020-06-29 20:31:55 · 517 阅读 · 0 评论 -
插入排序——直接插入排序、多种折半插入排序和希尔排序及其比较
排序9.3 插入排序9.3.1 直接插入排序1. 顺序表上的直接插入排序2.链表上的直接插入排序总结9.3.2 折半插入排序9.3 插入排序插入排序(insert sor)的基本思想是:每一次设法把一个数据元素插入已经排序的部分序列的合适位置,使得插入后的序列仍然是有序的。开始时建立一个初始的有序序列,它只包含一个数据元素。然后,从这个的初始序列开始不断进行插入数据元素,直到最后一个数据元素插入有序序列后,整个排序工作就完成了。9.3.1 直接插入排序直接插入排序(straight inser原创 2020-06-29 20:32:17 · 763 阅读 · 0 评论 -
交换排序——冒泡排序和快速排序(递归和非递归)
排序9.2 交换排序冒泡排序快速排序总结9.2 交换排序交换排序的基本思想是对数据表中两个数据元素的关键字进行比较,如果发生逆序(即排列顺序与排序后的次序正好相反),则两者交换位置,直到所有数据元素都排好序为止。冒泡排序冒泡排序(bubble sort) 的算法思想是:设数据表elem中有n个数据元素,首先对数据表中第一、二个数据元素(elem[0]和 clem[1])进行比较,如果 elem[0]>eicm[1],则交换 elcm[0]和 elem[1];然后对第二、三个数据元素做同样处理原创 2020-06-29 20:32:27 · 645 阅读 · 0 评论 -
数据结构 第八章 查找目录
查找8.1 基本概念8.2 顺序表8.1 基本概念1)数据表:就是指数据元素的有限集合。例如,为统计职工业绩,建立一个包括职工编号、职工姓名、业绩等信息的表格。这个表格中的每一个职工的信息就是一个数据元素。对此表格可以根据职工编号查找职工的业绩等信息,也可以根据职工的姓名查找职工的业绩等信息。2)关键字:数据表中数据元素一般有多个属性域(字段),即由多个数据成员组成,其中有某些属性域可用来区分不同的元素,它们可作为查找或排序的依据,这些属性域即为关键字。例如,上面所讲的职工工作业绩表的例子中的职工编号原创 2020-06-29 20:23:08 · 146 阅读 · 0 评论 -
查找——散列表的散列函数及冲突的处理办法
查找8.7 散列表8.7.1 散列表的基本概念8.7.2 散列函数1.直接定址法2.数字分析法3.除留余数法4.乘余取整法5.平方取中法6.随机数法7.折叠法8.7.3 处理冲突的闭8.7 散列表8.7.1 散列表的基本概念所谓查找,实际上就是要确定关键字(Key)等于给定值(k)的数据元素的存储地址(Addr)。故查找问题本质上是确定关键字集合K到地址空间A的映射(即函数):H:K->A。因而,任何查找算法,都是计算函数H(k)的值的过程。由于k与H(k)之间没有简单直接的对应关系,函数H原创 2020-06-29 20:33:51 · 2631 阅读 · 0 评论 -
查找——从多路查找树到B-树和B+树
查找8.6 B-树8.6.1 动态的m路查找树8.6.2 B-树(1)B-树的定义(2)B-树的插入(3)B-树的删除8.6.5 B+树(1)B+树的定义(2)B+树的插入(3)B+树的删除总结相关资料8.6 B-树二叉排序树比较适合于在内存中组织较小的索引。对于存放在外存中的较大的文件系统,用二叉排序树来组织索引就不太合适了。若以结点作为内外存交换的单位,则在查找过程中需对外存进行 log2n 次访问,显然很费时。因此在文件检索系统中大最使用的是用B-树或 B+树做文件案引。8.6.1 动态的m路查原创 2020-06-29 20:35:38 · 395 阅读 · 0 评论 -
查找——平衡二叉树Balanced Binary/Height-Balanced Tree的详解与实现
查找8.5 平衡二叉树8.5.1 平衡二叉树的定义8.5.2 平衡旋转8.5.3 插入结点8.5.4 删除结点其他8.5 平衡二叉树在二叉排序树上实现查找的时间复杂度与从根到所查数据元素的结点的路径长度成正比,在最坏情况下这个长度等于树的高度。在构造二叉排序树时,如果输入的数据元素序列恰巧按其关键字大小有序,则在形式上已经退化成一个单链表了。这样查找操作所需要的时间就是O(n),或者说与结点个数成线性关系。因此需要有一种方法来避免使二叉排序树变得过于窄而高这种情况的发生。如果能够保证树的高度与树中结点原创 2020-06-29 20:34:11 · 1019 阅读 · 0 评论 -
查找——索引顺序表和倒排表
查找8.3 索引顺序表和倒排表8.3.1 索引顺序表8.3 索引顺序表和倒排表当数据表中的数据元素个数n很大时,如果用顺序查找结构,则查找效率极低。如果采用有序表存储形式的折半查找,则为了维持数据表的有序性,时间开销很大;而且,当数据表很大时,计算机内存的容量可能不够。这时可采用索引方法来实现存储和查找。8.3.1 索引顺序表索引顺序表一般由主表和索引表两个部分组成,两者均采用顺序存储结构。主表中存放数据元素的全部信息,索引表中存放数据元素的主键字和索引信息。在图8-3所示的学生信息表的例子中原创 2020-06-29 20:36:12 · 5449 阅读 · 1 评论 -
顺序表查找——顺序查找、有序表查找(多种方法)及次优查找树
查找8.2 顺序表8.2.1 顺序表的查找基本思想顺序存储结构下的顺序查找算法平均查找长度8.2.2 有序表的折半查找折半查找的算法思想折半查找算法一般代码二叉搜索树8.2 顺序表采用顺序存储结构的数据表称为顺序表。顺序表适合作静态查找。8.2.1 顺序表的查找基本思想设有n个数据元素的顺序表,从表的一端(前端或后端)开始,用给定的值依次和表中各数据元素的关键字进行比较,若在表中找到某个数据元素的关键字和给定值相等,则查找成功,给出该数据元素在表中的位置;若查遍整个表,不存在关键字等于给定值的数据原创 2020-06-29 20:33:31 · 17340 阅读 · 1 评论 -
活动网络——用边表示活动的网络AOE
7.6.2 用边表示活动的网络AOE问题的提出把工程计划表示为有向图,用顶点表示事件,弧表示活动;每个事件表示在它之前的活动已完成,在它之后的活动可以开始。【例】设一个工程有11项活动,9个事件事件。V1——表示整个工程开始事件,V9——表示整个工程结束。问题:(1)完成整项工程至少需要多少时间?(2)哪些活动是影响工程进度的关键?相关定义边表示活动 activity on e...原创 2020-06-29 20:34:19 · 1629 阅读 · 0 评论 -
活动网络——用顶点表示活动的网络AOV和拓扑
7.6.1 用顶点表示活动的网络AOV问题的提出学生选修课程问题顶点,表示课程有向弧,表示先决条件,若课程i是课程j的先决条件,则图中有弧<i,j>学生应按怎样的顺序学习这些课程,才能无矛盾、顺利地完成学业——拓扑排序相关定义有向无环图(directed acycline graph),简称DAG图第二个图没有环,是DAG,第三个图有环,只能成为有向图顶点表示活动(activity on vertices AOV)的网络AOV是用以表示一个工程的有向图图中的顶点表示一原创 2020-06-29 20:34:39 · 1584 阅读 · 0 评论 -
查找——二叉排序树Binary Sorting Tree的详解与实现
查找8.4 二叉排序树8.4.1 二叉排序树的定义8.4.2 二叉排序树的实现二叉排序树类模板二叉排序树具体函数查找插入删除8.4.3 效率分析代码工程压缩包8.4 二叉排序树为了适应动态查找,宜将数据组织表组织成树表。二叉排序树是一种基于二叉树的动态查找结构。8.4.1 二叉排序树的定义二叉排序树或是一棵空树,或者是具有下列性质的二叉树:1)左子树(如果存在)上所有结点的关键字都小于根结点的关键字。2)右子树(如果存在)上所有结点的关键字都大于根结点的关键字。3)左子树和右子树也是二义排序树原创 2020-06-29 20:36:02 · 873 阅读 · 0 评论 -
最短路径——贝尔曼-福特BelLnan-Ford算法详解与实现
最短路径7.5.2 弧上权值为任意值的单源点最短路径问题弧上权值为任意值的单源点最短路径难点贝尔曼-福特算法实现过程算法思路代码实现效率分析思考优化方法:7.5.2 弧上权值为任意值的单源点最短路径问题弧上权值为任意值的单源点最短路径难点图一般的情况:带权有向图G上弧的权值可能为负值。对于带权有向图来说,利用上节给出的迪克斯特拉算法,不一定能得到正确的结果(带负权的回路最短路径是不存在的,可以一直循环下去)。若设源点V0=A,使用迪克斯特拉算法,显然,结果是有问题的。为了能够求解弧上带有负权值的原创 2020-06-29 20:35:54 · 2466 阅读 · 1 评论 -
最短路径——迪杰斯特拉Dijkstra算法详解与实现
最短路径7.5.1 弧上权值为非负情形的单源点最短路径问题弧上权值为非负情形的单源点最短路径概念迪杰斯特拉算法实现过程算法思路7.5.1 弧上权值为非负情形的单源点最短路径问题弧上权值为非负情形的单源点最短路径概念弧上权值为非负情形的单源点最短路径问题:对于给定一个带权有向图G(G中所有弧上的权均为非负值)与源点v,求从v到G中其余各顶点的最短路径。如图7-23所示的带权有向图。设源点为A,则源点A到其余顶点的最短路径分别为:(A,B)路径长度为10,(A,D,C)路径长度为50,(A,D)路径原创 2020-06-29 20:36:37 · 1299 阅读 · 0 评论 -
最小生成树——普里姆(Prim)算法详解和实现
最小生成树普里姆(Prim)算法普里姆(Prim)算法普里姆算法的基本思想是:假设连通网络为 N=(V,E);TE为N的最小生成树上边的集合,开始时TE为空集;U为算法在构造最小生成树过程中已得到的顶点集,开始时U={ u0 }(u0属于V)。(1) 算法从N中的某一顶点u0出发,选择与u0关联的具有最小权值的边(u0,vi),将顶点vi加入到生成树的顶点集合U中,(u0,vi)加入到集合TE中;(2) 以后每一步从一个顶点在U中,而另一个顶点在(V-U)中的各条边当中选择权值最小的边(u,v原创 2020-06-29 20:35:47 · 4462 阅读 · 0 评论 -
最小生成树——克鲁斯卡尔(Kruskal)算法详解和实现
最小生成树克鲁斯卡尔(Kruskal)算法代码实现算法效率分析克鲁斯卡尔(Kruskal)算法克鲁斯卡尔算法的基本思想是:设一个有n个顶点的连通网络G={V,E},(1)先构造一个包括全部n个顶点和0条边的森林F={T0,T1,…,Tn-1},(2)以后每一步向下中加入一条边(v,u),它应是所依附的两个顶点v和u分别在森林F的两棵不同的树上的所有边中具有最小权值的边。由于这条边的加入,...原创 2020-06-29 20:31:20 · 4035 阅读 · 0 评论 -
最小生成树——Kruskal和Prim算法的实现和总结
最小生成树最小生成树概念最小生成树的算法克鲁斯卡尔(Kruskal)算法普里姆(Prim)算法最小生成树概念一个连通图的生成树是原图的极小连通子图,它包含原图中的所有n个顶点和使n个顶点连通的n-1条边。 这意味着对于生成树来说,若删除它的一条边,就会使生成树变成非连通图;若给它增加一条边,就会形成图中的一个回路。一个连通图的生成树不是唯一的,使用不同的方法遍历图,可以得到不同的生成树;从...原创 2020-06-29 20:31:12 · 673 阅读 · 0 评论 -
数据结构 第七章 图目录
第七章 图图 目录7.2 图的存储结构7.3 图的遍历和连通性7.4 最小生成树图 目录本科学习整理7.2 图的存储结构7.2.1 邻接矩阵7.2.2 邻接表7.2.3 邻接多重表7.2.4 十字链表7.3 图的遍历和连通性7.3.1 深度优先遍历7.3.2 广度优先遍历7.3.3 连通分量7.4 最小生成树...原创 2020-06-29 20:21:43 · 261 阅读 · 0 评论 -
图的遍历——连通分量
7.3 图的遍历7.3.3 连通分量7.3.3 连通分量对于连通图,从任一顶点出发,只需一次调用深度优先搜索算法或广度优先搜索算法即可访问到图中的所有顶点;对于非连通图时,从图中某一顶点出发,一次调用深度优先搜索算法或广度优先搜索算法不可能访问到图中的所有顶点,只能访问到该顶点所在的极大连通子图(即连通分量)的所有顶点。非连通图有k个连通分量,就要k次调用DFS或BFS才能访问图中的所有...原创 2020-06-29 20:31:07 · 3803 阅读 · 0 评论 -
图的遍历——广度优先遍历BFS/BFT
7.3 图的遍历7.3.2 图的深度优先遍历(Breadth First Traversal)7.3.2 图的深度优先遍历(Breadth First Traversal)图的广度优先遍历基于广度优先搜索(breadth first search,BFS),广度优先搜索是从图中某一顶点v出发,在访问顶点v后再访问v的各个未曾被访问过的邻接顶点w1,w2,…,wk,然后再依次访问w1,w2,....原创 2020-06-29 20:30:58 · 1065 阅读 · 0 评论 -
图的遍历——深度优先遍历DFS/DFT
7.3 图的遍历7.3.1 图的深度优先遍历(Depth First Traversal)7.3.2 图的广度优先遍历(Breadth First Traversal)同树的遍历类似,对于给定的图,沿着一些边(或弧)访问图中所有的顶点,且使每个顶点仅被访问一次,这个过程叫作图的遍历。由于图中可能存在回路,且图的任一顶点都可能与其他顶点相邻接,所以在访问完某个顶点之后可能会沿着某些边又回到了曾经...原创 2020-06-29 20:30:52 · 1039 阅读 · 0 评论 -
图的存储结构——十字链表的理解
7.2 图的存储结构7.2.4十字链表 Orthogonal List十字链表的存储结构十字链表的顶点结点结构十字链表的弧结点结构十字链表的存储结构7.2.4十字链表 Orthogonal List同无向图类似,有向图也有另外一种链式存储结构称为十字链表。根据应用的需要,对于有向图有时既需要用邻接表,又需要用逆邻接表,这时可以把两个表合二为一,用有向图的邻接多重表(通常称为十字链表)表示。...原创 2020-06-29 20:30:47 · 4280 阅读 · 0 评论 -
图的存储结构——邻接多重表(多重邻接表)的实现
7.2 图的存储结构7.2.3 邻接多重表(多重邻接表)Adjacency Multilist邻接多重表的类定义邻接多重表的顶点结点类模板邻接多重表的边结点类模板邻接多重表的类模板邻接多重表与邻接表的对比7.2.3 邻接多重表(多重邻接表)Adjacency Multilist在无向图的邻接表中可以看到,每一条边(vi,vj)在邻接表中有两个边结点:一个在顶点vi的边链表中,表示(vi,vj)...原创 2020-06-29 20:30:40 · 10732 阅读 · 2 评论 -
图的存储结构——邻接表的实现
7.2 图的存储结构7.2.2 邻接表Adjacency List定义有向网邻接表的实现顶点结点类模板弧结点类模板有向网邻接表类模板无向图/有向图的邻接表效率对比邻接表和邻接矩阵的比较7.2.2 邻接表Adjacency List邻接表是邻接矩阵的改进。当图中的边数很少时,邻接矩阵中会出现大量的零元素,为了存储这些零元素,将耗费大量的存储空间。为此,可以把邻接矩阵的每一行改为一个单链表。定义...原创 2020-06-29 20:30:32 · 3563 阅读 · 1 评论 -
图的存储结构——邻接矩阵实现
7.2 图的存储结构7.2.1 邻接矩阵Adjacency Matrix定义无向图的邻接矩阵类模板邻接矩阵类定义类的实现运行的辅助由于在图中,任何两个顶点之间都可能存在联系,所以无法在存储位置上反映数据元素之间的联系,因此图没有顺序存储结构。按图中顶点之间的联系,图的存储结构似乎采用多重链表表示比较恰当。但是若采用多重链表,则链表中结点的结构难以确定。如果结点中的指针数若按顶点度的最大值来设置,...原创 2020-06-29 20:30:25 · 1200 阅读 · 2 评论