为什么要有图?
1.线性表局限于一个直接前驱和一个直接后驱关系
2.树也只能有一个直接前驱也就是父节点
3.当我们需要表示多对多的关系时,这里我们就用到了图
图的基本介绍
图是一种数据结构,其中结构可以具有零个或多个相邻元素,两个节点之间的连接成为边.结点也可以称为定点
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210429231403351.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTc3NzAxOQ==,size_16,color_FFFFFF,t_70)
图的常用概念
1.定点(vertex)
2.边(dege)
3.路径
4.无向图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210429232211482.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTc3NzAxOQ==,size_16,color_FFFFFF,t_70)
5.有向图
6.带权图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210429232259180.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTc3NzAxOQ==,size_16,color_FFFFFF,t_70)
图的表示
图的表示方式有两种:二维数组表示(邻接矩阵);链表表示(邻接表)
邻接矩阵::
邻接矩阵是表示图形中定点之间相邻关系的矩阵,对于n个定点的图而言,矩阵是row和col表示的是1…n个点
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210429232722509.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTc3NzAxOQ==,size_16,color_FFFFFF,t_70)
邻接表
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210429234932378.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTc3NzAxOQ==,size_16,color_FFFFFF,t_70)