我们平常所用到的树是一种特殊的无环连通图。
树一定是图,但是图不一定是树。
树是一种存储数据结构。通过用顶点/节点 来存储价值/数值。
而图是一种表示型数据结构,它有两部分组成:顶点和边。
比如在下图,顶点表示城市,而边表示两个城市之间的某种关系,我们称之为权值,权值可能是:亲密度,距离,高铁时间,高铁价格等。
图分为无向图和无向图,无向图是指a可以到b,b也可以到a。有向图指的是只能单向传递的图,比如只能a到b,但是不能通过b到达a:
图的存储结构
图一般有邻接矩阵和邻接表两种存储方式。
邻接矩阵一般存稠密图(每两个顶点都有一条边相连的图):
如下图,A存储的是,B也存储的是1,说明A与B相通且无向:
如果是无向图,邻接矩阵的表示如下: 比如顶点0指向1的边存储的是1,而顶点1指向0的边存储的是0,说明顶点0可以到达顶点1,顶点1不不能直接到达顶点0:
邻接表一般存储稀疏图(只有一个顶点有到达各个顶点的一条边):
我们模拟实现一下邻接矩阵
邻接矩阵
结构
图的创建
一般有三种:
一.IO,但是这种不方便修改,适合用于OJ中
二.根据图的结构特征适合写入到文件中,但是不方便修改。
三.手动写边,像下面这种:
我们想要测试直接改数据就行了
我们就按第三种来写:
主要函数
初始化
添加边
在添加边之前我们需要获取一下顶点,顶点我们在map里面存着,我们可以通过获取顶点下标的方式获取顶点:
打印
代码托管:图--邻接矩阵 ·