\ue50a2017-07-11　19:00:21　\ue50b　图的存储结构相比线性表与树...(PS:感谢Covit大佬提供的皂片)上面的图片演示的是关于带权图,所以里面存储的是权值,如果是　无向图的　话,一般用1表示有边,0表示无边。从图的邻接矩阵存储方法(或称数组存储法)容翻译　图的存储结构相比线性表与树而言,更加复杂。图不可能用简单的顺序存储结构来表示,这是一个很困难的问题。所幸,一般有三种存储结构:邻接矩阵、邻接表和边集数组。　邻接矩阵　邻接矩阵是表示顶点之间相邻关系的矩阵。看图就知道了:　(PS:感谢Covit大佬提供的皂片)　上面的图片演示的是关于带权图,所以里面存储的是权值,如果是无向图的话,一般用　1　表示有边,　0　表示无边。　从图的邻接矩阵存储方法(或称数组存储法)容翻译看出这种表示具有以下特点。　1、无向图的邻接矩阵一定是对称的;而有向图的邻接矩阵不一定对称。用邻接矩阵来表示一个具有n个顶点的图时需要n²个存储量来存储邻接矩阵。　2、对于无向图,邻接矩阵的第i行非零元素的个数正好是第i个顶点的度TD(Vi)。　3、对于有向图,邻接矩阵的第i行非零元素的个数正好是第i个顶点的出度OD(Vi)(或入度ID(Vi))。　4、邻接矩阵的局限在于很容易确定图中任意两个顶点之间是否有边相连。但是必须按行、列对每个元素进行检测才能够确定图中有多少条边。　show　the　code　建立一个有向图的邻接矩阵　#include　#define　max　100　int　creatcost(　int　cost[][max]){　int　vexnum,arcnum,i,j,k,v1,v2;　printf　(　"\ninput　the　vexnum,arcnum:"　);　scanf(　"　%d　,　%d　"　,&vexnum,&arcnum);　for　(i=　1　;i　#include　#define　max　100　typedef　struct　node{　int　adjvex;　struct　node*next;}arcnode;　typedef　struct　{　int　vertex;　arcnode*firstarc;}vexnode;vexnode　adjlist[max];　int　creatadjlist(){　arcnode*ptr;　int　arcnum,vexn