数据结构之图的基础知识(一)

本文介绍了图这一数据结构的基础知识,包括无向图、有向图、完全图、稀疏图和稠密图的概念。重点讲解了图的两种主要存储结构——邻接矩阵和邻接表,详细阐述了它们的适用场景及创建过程。邻接矩阵适用于稠密图,邻接表则适合稀疏图。此外,还提及了十字链表和邻接多重表作为图的其他存储方式。
摘要由CSDN通过智能技术生成

今天我们翻开新的篇章,来看一看另一种全新的数据结构——图。图是多对多的关系,在平时也是经常见到的,应用也很广泛,后面我们要讲到的生成树和最短路径,拓扑排序都与图的内容有关。

下面一起来看看图的基础知识吧

1.概念:

图是由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

若顶点vi到vj之间的边没有方向,则这条边为无向边,表示为(vi,vj)或(vj,vi),反之为有向边(或弧),表示为<vi,vj>,其中vi称为弧尾,vj称为弧头。总是弧尾指向弧头

若图中所有边都为无向边,则该图为无向图,反之若都为有向边,则为有向图

简单图:不存在顶点到其自身的边,且同一条边不重复出现。
无向完全图:任意两个顶点中都存在边的无向图。若顶点为n个,则边数为n(n-1)/2。
有向完全图:任意两个顶点中都存在边的有向图。若顶点为n个,则边数为n(n-1)。
稀疏图和稠密图:有很少条边或弧的图称为稀疏图,反之称为稠密图。
:与边或弧相关的数;带有权的图称为网
相邻且有边直接连接的两个顶点称为邻接点

无向图中,顶点所连边的数目称为

在有向图中,由于边有方向,则顶点的度分为入度出度,以顶点i为终点的边的数目,叫做入度,以顶点i为始边的边的数目,叫做出度。

无向图中,从顶点vi到顶点vj的路径是一个顶点序列,路径的长度为经过的边或弧的数目。第一个顶点和最后一个顶点相同的路径称为回路或环。序列中不出现重复的顶点称为简单路径。,除了第一个顶点和最后一个顶点外,其余顶点不重复的路径称为简单回路

路径长度:不带权的图,等于路径上边的条数,带权的图,等于各个边权值的总和。

生成树:一个无向连通图的最小连通子图叫做改图的生成树

2.图的存储结构:主要有四种存储结构:邻接矩阵,邻接多重表,十字链表

(1)无向图的领接矩阵:

 有向图的领接矩阵:

h

注意有向图是从列发出到行的。

网(即有权图)的 领接矩阵

 领接矩阵的建立:

 

 具体实现:

 

 有向图在创建时要注意和无向图的区别

(2)邻接表 

(1)无向图的领接表 

两个结点顺序是可以互换的

 若有权值,则再加上一个表示权值的结构info

 邻接表的特点:

 有向图的领接表

 左边的那种是v1指向哪个节点来建立邻接表,右边那种是v1被哪个节点来0建立邻接表。各有优点。

邻接表的创建:

顶点的结点结构表示法:

 边的结点结构表示法:

 总的图的结构表示法:

 这里变量的具体应用场景举例:

具体创建过程: 

 

 (生成新节点,再类似于头插法插入,也可以用尾插法插入,两种插入方式得到的邻接表是不同的)

邻接矩阵多用于稠密图,邻接表多用于稀疏图

(3)十字链表,主要解决有向图

以v1为例,firstin是指向那些指向v1的结点,firstout指向那些v1指向的结点

tailvex全都是那一层字母表示的下标。headvex是v1指向的结点的对应的下标

hlink是指向那个firstin指向它的顶点结点,还有其他指向它的结点。即连接指向v1的结点

tlink是连接那些v1指向的结点

 (4)邻接多重表:无向图的另一种链式存储结构

 关于图的四种存储结构就在这里了,对于前面两种是要求重点掌握的,邻接矩阵多用于稠密图,邻接表多用于稀疏图,后两种熟悉原理即可。

好啦,关于图的基础知识以及重要的图存储结构就分享到这里啦。特别感谢王卓老师的网课(本篇文章很多用到了她的网课图片),真的是通俗易懂,真的很合适新手学习数据结构,强烈推荐。

本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值