数据结构通信网络建设代码C语言,数据结构算法与应用-C语言012.pdf

下载

第1 2章 图

恭喜!你已经成功穿越了“树”的森林,下面要学习图这种数据结构。令人惊叹的是,图

可以用来描述成千上万的实际问题,不过,我们仅研究其中的一小部分。本章的主要内容如下:

• 图的若干术语:顶点,边,邻接,关联,度,回路,路径,连通构件,生成树。

• 图的三种类型:无向图,有向图和加权的图。

• 图的常用表示方法:邻接矩阵,邻接链表和邻接压缩表。

• 图的标准搜索方法:宽度优先搜索和深度优先搜索。

• 在图中寻找路径,在无向图中寻找连通构件以及在无向连通图中寻找生成树的算法。

• 如何把抽象数据类型表示成一个抽象类。

本章所使用的新的C + +特征是:抽象类,虚函数和虚基类。

12.1 基本概念

简单地说,图(g r a p h )是一个用线或边连接在一起的顶点或节点的集合。正式一点的说

法是,图G= ( V,E) 是一个V和E 的有限集合,元素V称为顶点(vertice, 也叫作节点或点),元素E

称为边(edge, 也叫作弧或连线),E 中的每一条边连接V中两个不同的顶点。可以用(i,j )来

表示一条边,其中 i 和j 是E 所连接的两个顶点。

一般来说,图是由回路和边组成,如图1 2 - 1所示。在图1 2 - 1中有些边是带方向的(带箭头),

而有些边是不带方向的。带方向的边叫有向边( directed edge ),而不带方向的边叫无向边

(undirected edge )。对无向边来说,(i, j ) 和(j , i) 是一样的;而对有向边来说,它们是不同的。

前者的方向是从i 到j ,后者是从j 到i 。

当且仅当(i, j ) 是图中的边时,顶点i 和j 是邻接的(a d j a c e n t )。边(i, j ) 关联(i n c i d e n t )于

顶点i 和j 。图12-1a 中的顶点1和2是邻接的,顶点 1和3 ,1和4 ,2和3 ,3和4也是邻接的,除此

之外,这个图中没有其他邻接的顶点。边( 1,2 )关联于顶点1和2 ,(2 ,3 )关联于顶点2和3 。

a) b) c)

图12-1 图

有些书中用 {i,j } 表示无向边,而用( i,j )表示有向边。还有一些书用(i,j )表示无向边,用表示有向边。本书对两种边

使用同一符号(i,j ),边有向与否可从上下文中看出。

3 6 6 第二部分 数 据 结 构

下载

在有向图中,有时候对邻接和关联的概念作更精确的定义非常有用。有向边 (i, j ) 是关联至

(incident to )顶点j 而关联于(incident from )顶点i 。顶点i 邻接至(adjacent to )顶点j ,顶点j

邻接于(adjacent from )顶点i 。在图12-1c 的图中,顶点2邻接于顶点 1,而1邻接至顶点2 。边

(1,2 )关联于顶点1而关联至顶点2 。顶点4邻接至顶点3且邻接于顶点3 。边(3,4 )是关联于

顶点3而关联至顶点4 。对于无向图来说,“至”和“于”的含义是相同的。

如果使用集合的表示方法,图 1 2 - 1中的几个图可以用如下方法表示: G 1 = (V1,E 1);

G2 = (V2 ,E2 )和G3 = (V3 ,E3 ),其中:

V = { 1 , 2 , 3 , 4 } ; E = { ( 1 , 2 ) , ( 1 , 3 ) , ( 2 , 3 ) , ( 1 , 4 ) , ( 3 , 4 ) }

1 1

V = { 1 , 2 , 3 , 4 , 5 , 6 , 7 } ; E = { ( 1 , 2 ) , ( 1 , 3 ) , ( 4 , 5 ) , ( 5 , 6 ) , ( 5 , 7 ) , ( 6 , 7 ) }

2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值