数据结构讲义7
《数据结构》大本课件-7
是一条简单回路;“v2→v1→v2→v4→v5→v3→v1→v2”是一条回路。
V1
4. 无向完全图、有向完全图
V1
V2
. 有n个顶点的无向图,最多可有n(n−1)/2
V2
V3
条边。如果一个有n个顶点的无向图,拥有
n(n−1)/2条边,那么就称该图为“无向完全图”。
可见,一个无向完全图的每个不同顶点对之 V3
度与出度之和,即:D(vi)=ID(vi)+OD(vi)。
V2
V3
. 比如在有向图里,由于弧< v2, v1>和< v3, v1>都以顶点v1为
弧头,所以顶点v1的入度ID(v1)=2;由于弧< v1, v2>以顶点v1为弧尾, 所以顶点v1的出度OD(v1)=1;于是,顶点v1的度为:
V4
V5
D(v1)=ID(v1)+OD(v1)=2+1=3
其他顶点 。
V6
. 比如,如图所示为一个非连通图,因为从顶点
v1没有路径可以到达顶点v7。
. 比如,该图的两个连通分量如图(a)和(b)所示。 V3
V1 V3
V6
V2
V7
V8
V4
V5
V9
(a)
(b)
7. 边的权、网络
. 可给图的边或弧依附上某种数值,这种
38 V1
与图的边或弧相关的数值被称为“权”。 44
V4
V4
V5
间,都存在有一条边。
. 如图所示是一个无向完全图,因为它有4个顶点,且它有4(4−1)/2=6条边,符合无
向完全图的定义。
. 对于有n个顶点的有向图,最多可以有n(n−1)条弧。如果一个有n个顶点的有向图,
数据结构 第七章 章节重点概要三
活动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网中列出完成预定工程计划所需要进行的活动,每个活动计划完成的时间,要发生哪些事件以及这些事件与活动之间的关系,从而可以确定该项工程是否可行,估算工程完成的时间以及确定哪些活动是影响工程进度的关键。
《数据结构》讲义
《数据结构》讲义什么是数据结构计算机解题步骤:建立数学模型——设计解此数学模型的算法——编制程序——进行测试调整——解答。
其中建立数学模型的实质:找出操作对象之间的关系。
例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-最小生成树
• 按照生成树的定义,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语言描述)第七章 查找
第七章 查找
目录
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-拓扑排序和关键路径
拓扑排序算法
拓扑排序方法: (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网就是一种可以形象地反映出整个工程中各个 活动之间前后关系的有向图。例如,计算机专业学生的 课程开设可看成是一个工程,每一门课程就是工程中的 活动,下页图给出了若干门所开设的课程,其中有些课 程的开设有先后关系,有些则没有先后关系,有先后关 系的课程必须按先后关系开设,如开设数据结构课程之 前必须先学完程序设计基础及离散数学,而开设离散数 学则必须先并行学完数学、程序设计基础课程。
《数据结构》讲义
《数据结构》讲义数据结构是计算机科学和编程中非常重要的概念之一。
它是指在计算机中存储和组织数据的方法和原则。
一、介绍数据结构在计算机科学领域中具有重要的地位。
它涉及到如何存储和组织数据,以便于对其进行检索和操作。
数据结构可以分为两种基本类型:线性结构和非线性结构。
线性结构包括数组、链表、栈和队列,而非线性结构包括树和图。
二、线性结构1. 数组数组是一种用来存储多个相同类型的元素的数据结构。
它具有固定长度和连续的内存空间。
数组可以通过索引访问元素,可以快速地插入和删除元素,但是其长度固定不变。
2. 链表链表是一种由节点组成的数据结构,每个节点都包含一个值和指向下一个节点的指针。
链表可以在任意位置插入和删除节点,但是访问节点的时间复杂度较高。
3. 栈栈是一种具有特定操作限制的线性结构。
它遵循“先进后出”的原则,即最后插入的元素最先被访问和删除。
栈可以用来实现递归、回溯和表达式求值等功能。
4. 队列队列也是一种具有特定操作限制的线性结构。
它遵循“先进先出”的原则,即最先插入的元素最先被访问和删除。
队列可以用来实现任务调度、缓冲区等功能。
三、非线性结构1. 树树是一种由节点组成的非线性结构。
它包含一个根节点和多个子节点,每个节点可以有任意数量的子节点。
树可以用来表示层次关系、排序和搜索等功能。
2. 图图是一种由节点和边组成的非线性结构。
节点表示实体,边表示节点之间的关系。
图可以用来表示网络、关系和路径等信息。
四、常用数据结构在实际编程中,还有一些常用的数据结构:1. 哈希表:通过哈希函数将元素映射到不同的位置,实现快速的查找和插入操作。
2. 堆:一种特殊的树结构,可以快速找到最大或最小的元素。
3. 二叉搜索树:一种有序的二叉树,可以高效地进行搜索和插入操作。
五、应用场景数据结构在实际开发中有广泛的应用场景,包括但不限于以下几个方面:1. 数据库系统中的索引结构:为了快速检索数据,数据库系统使用各种数据结构来组织数据。
数据结构 (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次课--函数的定义、声明和调用
第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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.2 图的存储结构
带权的图) 网(带权的图)的邻接矩阵
W (i , j ), 如果 i ! = j 且 < i , j > ∈ E 或 (i , j ) ∈ E A.Edge [i ][ j ] = ∞, 否则,但是 i ! = j 0, 对角线 i == j
2011-11-11
13
7.2 图的存储结构
用邻接矩阵表示图时, 用邻接矩阵表示图时,除了存储用于表示顶点间相邻关系 的邻接矩阵外,还需要一个数组存储顶点。表示形式为: 的邻接矩阵外,还需要一个数组存储顶点。表示形式为:
#define INFINITY #define MAX typedef struct{ VertexType int int int GraphKind } Mgraph;
数据结构
(Data Structure)
柳 青
Email: liuqing@
School of Software , Yunnan University
2011-11-11
1
第七章 图
7.1 图的定义和术语 7.2 图的存储结构 7.3 图的遍历 7.4 图的连通性问题 7.5 有向无环图及其应用 7.6 最短路径
2011-11-11
18
7.2 图的存储结构
在邻接表中,对图中每个顶点建立一个单链表, 在邻接表中,对图中每个顶点建立一个单链表,第i 个单链表中的结点表示依附于顶点vi的边。 vi的边 个单链表中的结点表示依附于顶点vi的边。 每个结点由3个域组成: 每个结点由3个域组成: 邻接点域,指示与顶点vi vi邻接的点在图中的 adjvex 邻接点域,指示与顶点vi邻接的点在图中的 位置; 位置; 链域,指向同一链表中下一个边或弧的结点。 nextarc 链域,指向同一链表中下一个边或弧的结点。 信息域,存储与边或弧相关的信息,如权值。 info 信息域,存储与边或弧相关的信息,如权值。 每个链表上附设一个表头结点,其中包括两个域: 每个链表上附设一个表头结点,其中包括两个域: 链域,指向链表中第一个结点; firstarc 链域,指向链表中第一个结点; 数据域,存储顶点vi的名或其它有关信息。 vi的名或其它有关信息 Data 数据域,存储顶点vi的名或其它有关信息。
2011-11-11 16
7.2 图的存储结构
VNode 顶点数组 ArcNode
边链表 data firstarc adjvex nextarc
2011-11-11
17
7.2 图的存储结构
有向图可以建立邻接表和逆邻接表: 有向图可以建立邻接表和逆邻接表: 1)在有向图的邻接表中,第 i 个边链表链接的边都是 )在有向图的邻接表中, 发出的边。也叫做出边表 出边表。 顶点 i 发出的边。也叫做出边表。 2)在有向图的逆邻接表中,第 i 个边链表链接的边都 )在有向图的逆邻接表中, 的边。也叫做入边表 入边表。 是进入顶点 i 的边。也叫做入边表。
A E H K M C
2011-11-11
无向图G的三个连通分量 无向图 的三个连通分量
B A E H K M D C D
8
B
F I
G J L
ቤተ መጻሕፍቲ ባይዱF I
G J L
7.1 图的定义和术语
在有向图中, 若对于每一对顶点v 强连通图与强连通分量 在有向图中 若对于每一对顶点 i 都存在一条从v 和从v 的路径, 和vj, 都存在一条从 i到vj和从 j到vi的路径 则称此图是强连 通图。非强连通图的极大强连通子图叫做强连通分量。 通图。非强连通图的极大强连通子图叫做强连通分量。 有向图G 有向图G
7.2 图的存储结构
算法7.1( 是在邻接矩阵存储结构MGraph上 算法 (P162)是在邻接矩阵存储结构 是在邻接矩阵存储结构 上 对图的构造操作的实现框架,它根据图 的种类调 对图的构造操作的实现框架,它根据图G的种类调 用具体构造算法。 用具体构造算法。 是无向网, 若G是无向网,则调用算法 2(P162) 是无向网 则调用算法7. ( 构造一个具有n个顶点和 条边的无向网 构造一个具有 个顶点和e条边的无向网 的时间复 个顶点和 条边的无向网G的时间复 杂度是O( 邻接矩阵G.arcs的初始 杂度是 n2+e·n), 其中对邻接矩阵 的初始
A B
A
B
• 有向图:G1 =(V1,A1) V1 有向图: ( , ) = {A,B,C,D} A1 = {<A,B>, <A,C>, <C,D>, <D,A>}
2011-11-11
•无向图:G2 =(V2,A2) 无向图: ( , ) V2 = {A,B,C,D,E} A2 = {(A,B), (A,C),(B,D), (B,E),(C,E),(D,E)}
2011-11-11 14
INT_MAX 20 //最大顶点数
typedef enum{ DG, DN, UDG, UDN} GraphKind; vexs[MAX]; vexnum; arcnum; kind; //顶点数组 //顶点数 //边数 //图的类型
Edge[MAX][MAX]; //邻接矩阵
2011-11-11
7
7.1 图的定义和术语
路径长度 非带权图的路径长度是指此路径上边的条数。 非带权图的路径长度是指此路径上边的条数。 带权图的路径长度是指路径上各边的权之和。 带权图的路径长度是指路径上各边的权之和。 在无向图中, 若从顶点v 到顶点v 有路径 连通图与连通分量 在无向图中 若从顶点 1到顶点 2有路径, 则称顶点 v1与v2是连通的。如果图中任意一对顶点都是连通的 则称此图是连通 是连通的。如果图中任意一对顶点都是连通的, 非连通图的极大连通子图叫做连通分量。 图。非连通图的极大连通子图叫做连通分量。 无向图G 无向图
4
7.1 图的定义和术 语
条边, 完全图 若有 n 个顶点的无向图有 n(n-1)/2 条边 则此图为完全 无向图。 个顶点的有向图有n(n-1) 条边 则此图为完全有 条边, 无向图。有 n 个顶点的有向图有 向图。 向图。 某些图的边具有与它相关的数, 称之为权。带权图叫做网 权 某些图的边具有与它相关的数 称之为权。带权图叫做网。
A B
有向图G的两个强连通分量 有向图G的两个强连通分量
A B
C
D
C
D
2011-11-11
9
7.1 图的定义和术语
一个连通图的生成树是它的极小连通子图, 生成树 一个连通图的生成树是它的极小连通子图,包含 连通图的全部n个顶点,但只有构成一棵树的 条边 条边。 连通图的全部 个顶点,但只有构成一棵树的n-1条边。 个顶点
1, 如果 < i , j >∈ E 或者 (i , j ) ∈ E A.Edge [i ][ j ] = 0, 否则
无向图的邻接矩阵是对称的, 无向图的邻接矩阵是对称的,有向图的邻接矩阵 可能是不对称的。 可能是不对称的。
2011-11-11 11
在无向图的邻接矩阵中, 在无向图的邻接矩阵中 统计第 i 行 (列) 1 的个数可得顶点 的度。 列 的个数可得顶点i 的度。 在有向图的邻接矩阵中, 的出度, 在有向图的邻接矩阵中 统计第 i 行 1 的个数可得顶点 i 的出度,统计第 j 的入度。 列 1 的个数可得顶点 j 的入度。
2011-11-11
5
7.1 图的定义和术语
中的一条边, 邻接顶点 如果 (u, v) 是 E(G) 中的一条边,则称 u 与 v 互为邻接顶 点。 一个顶点v的度是与它相关联的边的条数 记作TD(v)。在 的度是与它相关联的边的条数。 顶点的度 一个顶点 的度是与它相关联的边的条数。记作 。 有向图中,顶点 的入度是以 为终点的有向边的条数, 是以v为终点的有向边的条数 有向图中 顶点v的入度是以 为终点的有向边的条数 记作 ID(v); 顶点 的出度是以 为始点的有向边的条数, 记作OD(v)。 v的出度是以 v 为始点的有向边的条数 记作 。 子图 设有两个图 G=(V, E) 和 G’=(V’, E’)。若 V’⊆ V 且 E’⊆ E, 则 = = 。 ⊆ ⊆ 的子图。 称 图G’ 是 图G 的子图。
化耗费了O(n2)的时间。 的时间。 的时间
2011-11-11 15
7.2 图的存储结构
7.2.2 邻接表 (Adjacency List)
无向图的邻接表: 无向图的邻接表: 把同一个顶点发出的边链接在同一个边链表 边链表中 把同一个顶点发出的边链接在同一个边链表中,链 边结点, 表的每一个结点代表一条边,叫做边结点 表的每一个结点代表一条边,叫做边结点,结点中保存 有与该边相关联的另一顶点的顶点下标 adjvex 和指向 nextarc。 同一链表中下一个边结点的指针 nextarc。 顶点表: 顶点表:用数组的形式存放所有的顶点及对应的边链表 的头指针。 的头指针。 边链表:每条边用一个结点进行表示。 边链表:每条边用一个结点进行表示。同一个结点的所 有的边形成它的边结点单链表。 有的边形成它的边结点单链表。 在邻接表的边链表中,各个边结点的链入顺序任意,视 在邻接表的边链表中,各个边结点的链入顺序任意, 顺序任意 边结点输入次序而定。 边结点输入次序而定。
2011-11-11
6
7.1 图的定义和术 语
出发, 路径 在图 G=(V, E) 中, 若从顶点 vi 出发 沿一些边经过一些顶点 vp1, = vp2, …, vpm,到达顶点 j。则称顶点序列 ( vi vp1 vp2 ... vpm vj ) 为从顶点 i 到达顶点v 为从顶点v 的路径。它经过的边(v 到顶点 vj 的路径。它经过的边 i, vp1)、(vp1, vp2)、...、(vpm, vj)应是属于 、 、 、 应是属于 E的边。 的边。 的边 均不互相重复, 简单路径 若路径上各顶点 v1,v2,...,vm 均不互相重复 则称这样的路径 为简单路径。 为简单路径。 与最后一个顶点v 重合, 回路 若路径上第一个顶点 v1 与最后一个顶点 m 重合 则称这样的路 径为回路或环。 径为回路或环。