数据结构讲义7

合集下载

数据结构 第七章 章节重点概要三

数据结构 第七章 章节重点概要三
活动a3 e (3)=ve(2)=3 l (3)=vl (4)-2=13
活动a4 e (4)=ve(2)=3 l (4)=vl (5)-1=6
活动a5 e (5)=ve(3)=4 l (5)=vl (5)-3=4
活动a6 e (6)=ve(3)=4 l (6)=vl (6)-5=14
活动a7 e (7)=ve(4)=5 l (7)=vl (7)-6=15
ptr=G->adjlist[j].firstedge;
while (ptr!=null)
{ k=ptr->adjvex;
G->adjlist[k].count--;/*当前输出顶点邻接点的入度减1*/
if(G->adjlist[k].count= =0)/*新的入度为0的顶点进栈*/
{G->adjlist[k].count =top;
(3)从汇点vn出发,令vl[n-1]=ve[n-1],按逆拓扑有序求其余各顶点的最迟发生时间vl[i](n-2≥i≥2);
(4)根据各顶点的ve和vl值,求每条弧s的最早开始时间e(s)和最迟开始时间1(s)。若某条弧满足条件e(s)=l(s),则为关键活动。
算法7.8求出了各事件的最早发生时间,Stack为栈;引用的函数FindInDegree(G, indegree)用来求图G中各顶点的入度,并将所求的入度存放于一维数组indegree中。
如果用AOE网来表示一项工程,那么,仅仅考虑各个子工程之间的优先关系还不够,更多关心的是:整个工程完成的最短时间是多少?哪些活动的延期将会影响整个工程的进度?而加速这些活动是否会提高整个工程的效率?
因此,通常在AOE网中列出完成预定工程计划所需要进行的活动,每个活动计划完成的时间,要发生哪些事件以及这些事件与活动之间的关系,从而可以确定该项工程是否可行,估算工程完成的时间以及确定哪些活动是影响工程进度的关键。

数据结构第七章 排序

数据结构第七章 排序

name 张涛 赵亮
冯博远 王强 李燕
7.2
基本原理
插入排序
每次将一个待排序的对象,按其关键字大小, 插入到前面已经排序好的一组对象的适当位臵上, 直到对象全部插入为止。
直接插入排序(Insert Sort)
希尔排序(Shell Sort)
7.2.1
直接插入排序
R[1]---R[i-1]
08 08
16 16
第三次
08
16
21
25* 25
49
希尔排序中d(间隔量)的取法 Shell最初的方案是 d= n/2, d=d/2, 直到d=1; Knuth的方案是d= d/3+1;
其它方案有:都取奇数为好;d互质为好 等等。
希尔排序的稳定性
如序列: 21 25 排序后为:08 16
R[0]有两个作用:
其一: 进入查找循环之前,保存 R[i] 的副本,使之不至 于因记录的后移而丢失R[i]中的内容; 其二: 在 while 循环时,“监视”下标变量 j 是否越界, 一旦越界(j<0),R[0]自动控制while循环的结束, 从而 避免了在while 循环内的每一次都要检测 j 是否越界( 即 省略了循环条件j>=0)。 因此,把 R[0] 称为“监视哨”。
第七章 排 序
本章内容
排序的概念和有关知识
常用的几种排序方法的基本思想、排序过 程和算法实现 各种排序算法的时间复杂度分析
学生成绩表
学号 姓名 高数 英语 总分
005 010 002
018 004
Chen Lin Gao Hong Wang Na
ZhangYang Zhao Pen
84 69 90

数据结构第七章--图(严蔚敏版)

数据结构第七章--图(严蔚敏版)
9个顶点 个顶点
8个顶点的无向图最多有 条边且该图为连通图 个顶点的无向图最多有28条边且该图为连通图 个顶点的无向图最多有 连通无向图构成条件:边 顶点数 顶点数-1)/2 顶点数*(顶点数 连通无向图构成条件 边=顶点数 顶点数 顶点数>=1,所以该函数存在单调递增的单值反 顶点数 所以该函数存在单调递增的单值反 函数,所以边与顶点为增函数关系 所以28个条边 函数 所以边与顶点为增函数关系 所以 个条边 的连通无向图顶点数最少为8个 所以28条边的 的连通无向图顶点数最少为 个 所以 条边的 非连通无向图为9个 加入一个孤立点 加入一个孤立点) 非连通无向图为 个(加入一个孤立点
28
无向图的邻接矩阵为对称矩阵
2011-10-13
7.2
图的存储结构
Wij 若< vi,vj > 或<vj,v i > ∈E(G)
若G是网(有权图),邻接矩阵定义为 是网(有权图), ),邻接矩阵定义为
A [ i,j ] = , 0或 ∞
如图: 如图:
V1
若其它
V2
3 4
2
V3
2011-10-13
C
A
B
D 2011-10-13 (a )
3
Königsberg七桥问题
• Königsberg七桥问题就是说,能否从某点出发 通过每桥恰好一次回到原地?
C
C
A B

A D
B
D (a)
2011-10-13
(b)
4
第七章 图
7.1 图的定义 7.2 图的存储结构 7.3 图的遍历 7.4 图的连通性问题 7.5 有向无环图及其应用 7.6 最短路径
2011-10-13

《数据结构》讲义

《数据结构》讲义

《数据结构》讲义什么是数据结构计算机解题步骤:建立数学模型——设计解此数学模型的算法——编制程序——进行测试调整——解答。

其中建立数学模型的实质:找出操作对象之间的关系。

例1. 图书馆书目检索——对应线性关系例2. 博奕树——对应树型关系例3. 交叉路口交通灯管理——对应图状结构。

数据结构是一门研究非数值计算的程序设计问题中(地计算机的操作对象及它们之间的关系和操作等的学科。

位)数据结构的基本概念和术语1. 数据(Data)数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。

换句话说,数据是对客观事物采用计算机能够识别、存储和处理的形式所进行的描述;是计算机加工处理的对象。

包括数值、字符、声音、图象等。

2. 数据元素(Data Element)数据元素是组成数据的基本单位, 是数据集合的个体,在计算机中通常作为一个逻辑整体进行考虑和处理。

一个数据元素可由若干个数据项组成(Data Item)。

3. 数据对象(Data Object)数据对象是性质相同的数据元素的集合,是数据的一个子集。

例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={′A′,′B′,…,′Z′},表1-1所示的学籍表也可看作一个数据对象。

由此可看出,不论数据元素集合是无限集(如整数集)、有限集(如字符集),还是由多个数据项组成的复合数据元素(如学籍表),只要性质相同,都是同一个数据对象。

综上1~3所述,再分析数据概念:4. 结构(Data Structure)数据元素相互之间的关系称为结构( Structure ),有四种基本结构。

(1) 集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。

(2) 线性结构:结构中的数据元素之间存在着一对一的线性关系。

(3) 树形结构:结构中的数据元素之间存在着一对多的层次关系。

(4) 图状结构或网状结构:结构中的数据元素之间存在着多对多的任意关系。

数据结构:第7章 图3-最小生成树

数据结构:第7章 图3-最小生成树

• 按照生成树的定义,n 个顶点的连通网络的生成树有 n
个顶点、n-1 条边。
即有权图
目标:
在网络的多个生成树中,寻找一个各边权值之和最小的
生成树。
构造最小生成树的准则 ❖ 必须只使用该网络中的边来构造最小生成树;
❖ 必须使用且仅使用n-1条边来联结网络中的n个顶点;
❖ 不能使用产生回路的边。
典型用途:
(b) u={1} w={2,3,4,5,6}
0 6 1 5
6
0
5
3
1 5 0 7 5 4
5
7
0
2
3 5 0 6
4 2 6 0
i
1234
closest[i] 1 1 1 1
lowcost[i] 0 6 1 5
56 11 ∞∞
closest用于存放顶点序号 lowest存放权值
15 4 6
1 25
3
54
5
6
(c ) u={1,3} w={2,4,5,6}
1
1
4
25
6
32
54
5
6
(d) u={1,3,6} w={2,4,5}
i
1234 5 6
closest[i] 1 3 1 1 3 3
lowcost[i] 0 5 0 5 5 4
i
1234 5 6
closest[i] 1 3 1 6 3 3

v3 v1

树 v4 v2
v1
0^ 1^ 0^ 1^
2.生成森林
若一个图是非连通图或非强连通图,但有若 干个连通分量或若干个强连通分量,则通过 深度优先搜索遍历或广度优先搜索遍历,不 可以得到生成树,但可以得到生成森林,且 若非连通图有 n 个顶点,m 个连通分量或强 连通分量,则可以遍历得到m棵生成树,合 起来为生成森林,森林中包含n-m条树边。

数据结构(Java语言描述)第七章 查找

数据结构(Java语言描述)第七章  查找
数据结构
第七章 查找
目录
1 查找
2 静态查找表
第七章 查找
动态查找表 哈希表 小结
总体要求
•掌握顺序查找、折半查找的实现方法; •掌握动态查找表(包括:二叉排序树、二叉平衡树 、B-树)的构造和查找方法; •掌握哈希表、哈希函数冲突的基本概念和解决冲突 的方法。
7.1基本概念
1、数据项 数据项是具有独立含义的标识单位,是数据不可分 割的最小单位。 2、数据元素 数据元素数是据由项若(名干) 数据项构成的数据单位,是在某
}
性能分析:i 0 1 2 3 4
5 13 19 21 37
Ci 3 4 2 3 4
查找成功:
比较次数 = 路径上的结点数
比较次数 = 结点 4 的层数
比较次数
2
56 7 56 64 75 1 34
判定树
5
8 9 10 80 88 92 2 34
查找37 8
树的深度
0
3
6
9
≤=
log2n +1
1
4
}
【算法7-1】初始化顺序表 public SeqTable(T[] data,int n){
elem=new ArrayList<ElemType<T>>(); ElemType<T> e; for(int i=0;i<n;i++){
e=new ElemType<T>(data[i]); elem.add(i, e); } length=n; }
前者叫作最大查找长度(Maximun Search Length),即 MSL。后者叫作平均查找长度(Average Search Length) ,即ASL。

数据结构:第7章 图4-拓扑排序和关键路径

数据结构:第7章 图4-拓扑排序和关键路径

拓扑排序算法
拓扑排序方法: (1)在AOV网中选一个入度为0的顶点(没有前驱) 且输出之; (2)从AOV网中删除此顶点及该顶点发出来的所 有有向边; (3)重复(1)、(2)两步,直到AOV网中所有 顶点都被输出或网中不存在入度为0的顶点。
从拓扑排序步骤可知,若在第3步中,网中所有顶 点都被输出,则表明网中无有向环,拓扑排序成功。 若仅输出部分顶点,网中已不存在入度为0的顶点, 则表明网中有有向环,拓扑排序不成功。
拓扑序列:C1--C2--C3 (3)
C12 C9 C10
C7 C8 C6
C11
拓扑序列:C1--C2--C3--C4 (4)
C7
C12
C12
C8
C8 C9 C10
C6
C9 C10
C6
C11
C11 拓扑序列:C1--C2--C3--C4--C5
(5)
拓扑序列:C1--C2--C3--C4--C5--C7 (6)
在 (b)中,我们用一种有向图来表示课程开设
拓扑排序
1.定义 给出有向图G=(V,E),对于V中的顶点的线性序列 (vi1,vi2,...,vin),如果满足如下条件:若在G中从 顶点 vi 到vj有一条路径,则在序列中顶点vi必在 顶点 vj之前;则称该序列为 G的一个拓扑序列。 构造有向图的一个拓扑序列的过程称为拓扑排序。 2.说明 (1)在AOV网中,若不存在回路,则所有活动可排成 一个线性序列,使得每个活动的所有前驱活动都排 在该活动的前面,那么该序列为拓扑序列. (2)拓扑序列不是唯一的.
2.AOV网实际意义
现代化管理中, 通常我们把计划、施工过程、生产流程、 程序流程等都当成一个工程,一个大的工程常常被划分 成许多较小的子工程,这些子工程称为活动。在整个工 程实施过程中,有些活动开始是以它的所有前序活动的 结束为先决条件的,必须在其它有关活动完成之后才能 开始,有些活动没有先决条件,可以 安排在任意时间开 始。AOV网就是一种可以形象地反映出整个工程中各个 活动之间前后关系的有向图。例如,计算机专业学生的 课程开设可看成是一个工程,每一门课程就是工程中的 活动,下页图给出了若干门所开设的课程,其中有些课 程的开设有先后关系,有些则没有先后关系,有先后关 系的课程必须按先后关系开设,如开设数据结构课程之 前必须先学完程序设计基础及离散数学,而开设离散数 学则必须先并行学完数学、程序设计基础课程。

数据结构导论 第七章 文件

数据结构导论 第七章 文件
10
二、顺序文件的检索方法
当需要对磁带顺序文件进行检索时,一般是采用顺序扫描的 方式来检索满足查询条件的记录。例如,若要检索第i个记录,则 必须先检索前面的i-1个记录。为了提高平均检索效和排序,则 形成一个称为待办文件(或事务文件)的文件。如果将被查询的 文件称为主文件,则批量检索就是按照待办文件的要求成批地检 索主文件。批量检索对于实时应用来说是不适宜的,因为实时查 询要求响应时间快,而在很短的时间间隔内,积累的批处理文件 规模太小,不能表现出它的优越性。
9
7.2 顺序文件
一、顺序文件
——指按记录进入文件的先后顺序存放、其逻辑顺序 和物理顺序一致的文件。 即
顺序文件是物理结构最简单的文件,也是数据处理历史上最早使 用的文件结构。顺序文件的各个记录按输入的先后次序存放在外存中 的连续存储区。为了便于检索和修改文件,文件中的记录通常按关键 字的大小次序排列,成为按关键字排序的顺序文件。 顺序文件的基本优点是在连续存取时速度较快。例如,如果文件 中的第i个记录刚被存取过,而下一个要存取的记录就是第i+1个记录, 则此次存取将会很快完成。磁带是比较适用于这种应用的外存设备。 存放于磁带上的文件也只能是顺序文件,这是由磁带的物理特性决定 的。存放于磁盘上的文件,既可以是顺序文件,也可以是索引结构或 其它结构类型的文件。
13
四、索引文件的存储
索引文件在存储器上分为两个区:索引区和数据 区。索引区存放索引表,数据区存放主文件 通常,索引项所含的数据信息比记录少得多,因 而索引所需的存储空间比文件本身(记录区)所需要 的存储空间少得多。在文件的记录数较少的情况下, 可以为每个记录建立一个索引项。文件建立时,开辟 一个索引区,一般固定在某个磁盘面的一个或多个磁 道上。写入一个记录到记录区时,在索引区相应登入 一个索引项,即把该记录的关键字(主关键字)和记 录的存储地址顺序写入索引区。文件建立后,将索引 区中的索引读入内存的缓冲区,按关键字进行内部排 序。最后将排序好的索引项顺序写回到磁盘上的索引 区。

数据结构 (C语言版)课件:第7章_图

数据结构 (C语言版)课件:第7章_图
非简单图
2020/9/30
3
7.1 图的逻辑结构
7.1.1 图的定义
● 相关概念 无向图和有向图
● 无向图:如果图中顶点 vi 和 vj 之间的边无方向,则称这条边为无向边, 用无序偶对 (vi, vj) 表示,称该图为无向图。
● 有向图:如果图中顶点 vi 和 vj 之间的边有方向,则称这条边为有向边, 用有序偶对 <vi, vj> 表示,称该图为有向图。
无论有向图还是无向图,顶点数 n、边 数 e 和度数之间满足:
2020/9/30
8
7.1 图的逻辑结构
7.1.1 图的定义
● 相关概念 权和网
● 权:权通常是指对图中边赋予的有意义的数值量。在实际应用中,权 可以有具体的含义。
● 网:如果将图中的每条边上都赋上一个权值,则称这种图为网,或称 为有权图 。
2020/9/30
6
7.1 图的逻辑结构
7.1.1 图的定义
● 相关概念 稀疏图和稠密图
● 稀疏图:边数很少的图称为稀疏图,如果 e 表示图中的边数,n 表示 图中的顶点数,则 e<nlogn。
● 稠密图:边数很多的图称为稠密图,如果 e 表示图中的边数,n 表示 图中的顶点数,则 e≥nlogn。
2020/9/30
无向完全图
有向完全图
5
7.1 图的逻辑结构
7.1.1 图的定义
● 相关概念 邻接和依附
● 邻接:对图 G=(V, VR),如果边 (vi, vj)∈VR,则称顶点 vi 和 vj 互为邻 接点;如果弧<vi, vj>∈VR,则称顶点 vi 邻接到 vj,vj 邻接自 vi。
● 依附:对图 G=(V, VR),如果边 (vi, vj)∈VR 或弧 <vi, vj>∈VR,则称 边 (vi, vj) 或弧 <vi, vj> 依附于顶点 vi 和 vj。

C与数据结构 第7次课--函数的定义、声明和调用

C与数据结构 第7次课--函数的定义、声明和调用
第7次课函数的定义声明和调用c语言与数据结构第7次课函数的定义声明和调用c语言与数据结构教学主题函数的定义声明和调用教学目标通过本次课的学习使学生掌握函数的定义声明及调用方法函数之间参数传递的方法
第7次课----函数的定义、声明和调用
第3章
又开始学习 新的一章了
《C语言与数据结构》
第7次课----函数的定义、声明和调用
函数调用的方式主要有三种情况: 函数语句:适合于无返回值的函数,或者不需要使 用返回值的函数。 例如: printf( “hello!” ); 函数表达式:出现在一个表达式中,此时使用函数 的返回值,并将此返回值作为运算对象参与表达式的 运算。 例如: c=3*max(a,b); 函数参数:将函数调用作为一个函数的实参。 例如: d=max( c, max(a,b) );
(7_2)
《C语言与数据结构》
第7次课----函数的定义、声明和调用
第3章
函数调用举例
【问题3】编写程序,实现求三个实数的最大数。
看源程序 (7_3) 运行程序 (7_3)
思考 将两个函数的位置前后交换一下,结果如何?
调用集成开发环境演示!
《C语言与数据结构》
第7次课----函数的定义、声明和调用
第3章
教案
教学主题 函数的定义、声明和调用 通过本次课的学习,使学生掌握函数的定义、 声明及调用方法,函数之间参数传递的方法。 1.函数的定义、声明及调用 2.函数的形参、实参、参数的传递 3.函数的返回值 1.函数的定义、声明及调用三者的区别 2.函数参数的传递方法
《C语言与数据结构》
教学目标
教学重点
《C语言与数据结构》
第7次课----函数的定义、声明和调用

《数据结构》讲义

《数据结构》讲义

《数据结构》讲义数据结构是计算机科学和编程中非常重要的概念之一。

它是指在计算机中存储和组织数据的方法和原则。

一、介绍数据结构在计算机科学领域中具有重要的地位。

它涉及到如何存储和组织数据,以便于对其进行检索和操作。

数据结构可以分为两种基本类型:线性结构和非线性结构。

线性结构包括数组、链表、栈和队列,而非线性结构包括树和图。

二、线性结构1. 数组数组是一种用来存储多个相同类型的元素的数据结构。

它具有固定长度和连续的内存空间。

数组可以通过索引访问元素,可以快速地插入和删除元素,但是其长度固定不变。

2. 链表链表是一种由节点组成的数据结构,每个节点都包含一个值和指向下一个节点的指针。

链表可以在任意位置插入和删除节点,但是访问节点的时间复杂度较高。

3. 栈栈是一种具有特定操作限制的线性结构。

它遵循“先进后出”的原则,即最后插入的元素最先被访问和删除。

栈可以用来实现递归、回溯和表达式求值等功能。

4. 队列队列也是一种具有特定操作限制的线性结构。

它遵循“先进先出”的原则,即最先插入的元素最先被访问和删除。

队列可以用来实现任务调度、缓冲区等功能。

三、非线性结构1. 树树是一种由节点组成的非线性结构。

它包含一个根节点和多个子节点,每个节点可以有任意数量的子节点。

树可以用来表示层次关系、排序和搜索等功能。

2. 图图是一种由节点和边组成的非线性结构。

节点表示实体,边表示节点之间的关系。

图可以用来表示网络、关系和路径等信息。

四、常用数据结构在实际编程中,还有一些常用的数据结构:1. 哈希表:通过哈希函数将元素映射到不同的位置,实现快速的查找和插入操作。

2. 堆:一种特殊的树结构,可以快速找到最大或最小的元素。

3. 二叉搜索树:一种有序的二叉树,可以高效地进行搜索和插入操作。

五、应用场景数据结构在实际开发中有广泛的应用场景,包括但不限于以下几个方面:1. 数据库系统中的索引结构:为了快速检索数据,数据库系统使用各种数据结构来组织数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.1 图的定义和术

有向图 G1
A
B
无向图 G2
A
B
E
C
D
• 顶点:
A
B
• 有向边(弧)、弧尾或初 始结点、弧头或终止结点
A
B
• 有向图:G1 =(V1,A1) V1 = {A,B,C,D} A1 = {<A,B>, <A,C>, <C,D>, <D,A>}
C
• 顶点:
D
A
B
• 无向边或边
A
B
•无向图:G2 =(V2,A2) V2 = {A,B,C,D,E} A2 = {(A,B), (A,C),(B,D), (B,E),(C,E),(D,E)}
❖ 顶点的度 一个顶点v的度是与它相关联的边的条数。记作TD(v)。在
有向图中,顶点v的入度是以v为终点的有向边的条数, 记作 ID(v); 顶点 v的出度是以 v 为始点的有向边的条数, 记作OD(v)。
❖ 子图 设有两个图 G=(V, E) 和 G’=(V’, E’)。若 V’ V 且 E’ E, 则 称 图G’ 是 图G 的子图。
#define INFINITY
INT_MAX
#define MAX
20 //最大顶点数
typedef enum{ DG, DN, UDG, UDN} GraphKind;
typedef struct{
VertexType vexs[MAX];
//顶点数组
int
Edge[MAX][MAX]; //邻接矩阵
无向图G
A
B
EFG
H
IJ
K M
C
L D
无向图G的三个连通分量ABFG NhomakorabeaE
H
IJ
K
L
M
C
D
7.1 图的定义和术语
❖ 强连通图与强连通分量 在有向图中, 若对于每一对顶点vi 和vj, 都存在一条从vi到vj和从vj到vi的路径, 则称此图是强连 通图。非强连通图的极大强连通子图叫做强连通分量。
有向图G
❖ 简单路径 若路径上各顶点 v1,v2,...,vm 均不互相重复, 则称这样的路径 为简单路径。
❖ 回路 若路径上第一个顶点 v1 与最后一个顶点vm 重合, 则称这样的路 径为回路或环。
7.1 图的定义和术语
❖ 路径长度
非带权图的路径长度是指此路径上边的条数。 带权图的路径长度是指路径上各边的权之和。 ❖ 连通图与连通分量 在无向图中, 若从顶点v1到顶点v2有路径, 则称顶点 v1与v2是连通的。如果图中任意一对顶点都是连通的, 则称此图是连通 图。非连通图的极大连通子图叫做连通分量。
杂度是O(n2+e·n), 其中对邻接矩阵G.arcs的初始 化耗费了O(n2)的时间。
7.2 图的存储结构
7.2.2 邻接表 (Adjacency List)
❖ 无向图的邻接表: 把同一个顶点发出的边链接在同一个边链表中,链表
的每一个结点代表一条边,叫做边结点,结点中保存有 与该边相关联的另一顶点的顶点下标 adjvex 和指向同 一链表中下一个边结点的指针 nextarc。
▪ 顶点表:用数组的形式存放所有的顶点及对应的边链表
的头指针。
▪ 边链表:每条边用一个结点进行表示。同一个结点的所
有的边形成它的边结点单链表。
▪ 在邻接表的边链表中,各个边结点的链入顺序任意,视
边结点输入次序而定。
7.2 图的存储结构
VNode
顶点数组
ArcNode
data firstarc
adjvex
7.1 图的定义和术 语
❖ 完全图 若有 n 个顶点的无向图有 n(n-1)/2 条边, 则此图为完全 无向图。有 n 个顶点的有向图有n(n-1) 条边, 则此图为完全有向 图。
❖ 权 某些图的边具有与它相关的数, 称之为权。带权图叫做网。
7.1 图的定义和术语
❖ 邻接顶点 如果 (u, v) 是 E(G) 中的一条边,则称 u 与 v 互为邻接顶 点。
A
B
有向图G的两个强连通分量
A
B
C
D
C
D
7.1 图的定义和术语
生成树 一个连通图的生成树是它的极小连通子图,包含 连通图的全部n个顶点,但只有构成一棵树的n-1条边。
无向图G
A
B
E
H
无向图G的生成树
A
B
E
H
M
C
D
M
C
D
7.2 图的存储结构
7.2.1 邻接矩阵 (数组表示法)
❖ 在图的邻接矩阵表示中,有一个记录各个顶点信 息的顶点表,还有一个表示各个顶点之间关系的 邻接矩阵。
列 1 的个数可得顶点 j 的入度。
7.2 图的存储结构
▪ 网(带权的图)的邻接矩阵
W (i,j), 如i果 !j且 <i,j E或 (i,j) E A .Ed[i]gj[]e = , 否但 则i是 !, =j
0, 对角 i=线 j=
7.2 图的存储结构
▪ 用邻接矩阵表示图时,除了存储用于表示顶点间相邻关系 的邻接矩阵外,还需要一个数组存储顶点。表示形式为:
7.1 图的定义和术

❖ 路径 在图 G=(V, E) 中, 若从顶点 vi 出发, 沿一些边经过一些顶点 vp1, vp2, …, vpm,到达顶点vj。则称顶点序列 ( vi vp1 vp2 ... vpm vj ) 为从顶点vi 到顶点 vj 的路径。它经过的边(vi, vp1)、(vp1, vp2)、...、(vpm, vj)应是属于 E的边。
边链表 nextarc
7.2 图的存储结构
❖ 有向图可以建立邻接表和逆邻接表: 1)在有向图的邻接表中,第 i 个边链表链接的边都是 顶点 i 发出的边。也叫做出边表。 2)在有向图的逆邻接表中,第 i 个边链表链接的边都 是进入顶点 i 的边。也叫做入边表。
❖ 设图 A = (V, E)是一个有 n 个顶点的图,则图的邻 接矩阵是一个二维数组 A.edge[n][n],定义:
A .Ed [i]jg [ ] e 1 0 ,, 否 如 < i,则 果 j> E 或(i,者 j) E
❖ 无向图的邻接矩阵是对称的,有向图的邻接矩阵 可能是不对称的。
❖ 在无向图的邻接矩阵中, 统计第 i 行 (列) 1 的个数可得顶点i 的度。 ❖ 在有向图的邻接矩阵中, 统计第 i 行 1 的个数可得顶点 i 的出度,统计第 j
int
vexnum;
//顶点数
int
arcnum;
//边数
GraphKind
kind;
//图的类型
} Mgraph;
7.2 图的存储结构
▪ 算法7.1(P162)是在邻接矩阵存储结构MGraph上 对图的构造操作的实现框架,它根据图G的种类调 用具体构造算法。 若G是无向网,则调用算法7. 2(P162) ▪ 构造一个具有n个顶点和e条边的无向网G的时间复
相关文档
最新文档