利用邻接矩阵实现图的存储,画出下图的邻接矩阵存储结构

  利用邻接矩阵实现图的存储,画出下图的邻接矩阵存储结构

  00-1010一、点睛之笔1。无向图的邻接矩阵2。有向图3的邻接矩阵。网络2的邻接矩阵。算法步骤3。实施4。测试。

  00-1010邻接矩阵通常用一维数组存储图中节点的信息,用二维数组存储图中节点之间的邻接关系。

  邻接矩阵可以用来表示无向图、有向图和网。

  00-1010在一个无向图中,如果存在一条从节点Vi到节点Vj的边,那么邻接矩阵M[i][j]=M[j][i ]=1,否则M[i][j]=0。

  无向图的邻接矩阵规定如下。

  无向图的邻接矩阵是对称且唯一的。

  b第I行或第I列的非零数正好是第I个节点的度数。

  00-1010在有向图中,如果存在从节点Vi到节点Vj的边,则邻接矩阵M[i][j]=1,否则M[i][j]=0。

  有向图的邻接矩阵规定如下。

  有向图的邻接矩阵不一定是对称的。

  b第I行的非零元素个数正好是第I个节点的度数,第I列的非零元素个数正好是第I个节点的度数。

  00-1010网是一个加权图。如果需要存储边的权重,则邻接矩阵表示为:M[i][j]=Wij。否则,就是无限的。

  00-1010 1输入节点和边的数量。

  2依次输入节点信息,存储在节点数组Vex[]中。

  3初始化邻接矩阵。如果是图,初始化为0,如果是网,初始化为无穷大。

  4依次输入附在每条边上的两个节点。如果是网络,还需要输入边的权重。

  如果是无向图,输入A和B,查询节点数组Vex[]中节点A和B的存储下标I和J,使Edge[i][j]=Edge[j][i]=1。如果是有向图,输入A和B,查询节点数组Vex[]中节点A和B的存储下标I和J,使Edge[i][j]=1。如果是无向网络,输入A,B,W,查询节点数组Vex[]中节点A和B的存储下标I和J,设edge [i] [j]=edge [j] [i]=w,如果是有向网络,输入A,B,W,查询节点数组Vex[]中节点A和B的存储下标I和J,设Edge [I] [J]=W。

  

目录

包装图;导入Java。util。扫描仪;公共类CreateAMGraph { static final int MaxVnum=100;//顶点数最大值静态int locatevex(AMGraph G,char x){ for(int I=0;维克斯纳姆;i ) //查找顶点信息的下标if (x==G.Vex[i])返回我;return-1;//没找到} static void create am graph(am graph G){ Scanner Scanner=new Scanner(system。在);int i,j;char u,v;System.out.println(请输入顶点数:);g . vex num=扫描仪。nextint();System.out.println(请输入边数:);g .边数=扫描仪。nextint();System.out.println(请输入顶点信息:);//输入顶点信息,存入顶点信息数组for(int k=0;维克斯纳姆;k ) { G.Vex[k]=scanner.next().charAt(0);} //初始化邻接矩阵所有值为0,如果是网,则初始化邻接矩阵为无穷大for(int m=0;维克斯纳姆;m)for(int n=0;不知道。维克斯纳姆;n)G . Edge[m][n]=0;System.out.println(请输入每条边依附的两个顶点:);while(g . edge num-0){ u=scanner。下一个().charAt(0);v=scanner.next().charAt(0);i=locatevex(G,u);//查找顶点英语字母表中第二十一个字母的存储下标j=locatevex(G,v);//查找顶点英语字母表中第二十二个字母的存储下标如果(我!=-1 j!=-1)G . Edge[I][j]=G . Edge[j][I]=1;//邻接矩阵储置1 else { System.out.println(输入顶点信息错!请重新输入!);G.edgenum//本次输入不算} } }静态无效打印(AMGraph G) { //输出邻接矩阵System.out.println(图的邻接矩阵为:);for(int I=0;维克斯纳姆;I){ for(int j=0;维克斯纳姆;j)系统。出去。print(G . Edge[I][j] t );系统。出去。println();} }公共静态void main(String[]args){ am graph G=new am graph();CreateAMGraph(G);打印(G)和:} } class am graph { char Vex[]=new char[CreateAMGraph .MaxVnum];int Edge[][]=new int[CreateAMGraph .MaxVnum][CreateAMGraph .MaxVnum];int vexnum//顶点数int edgenum//边数}

 

  

一、点睛

绿色为输入,白色为输出。

 

  到此这篇关于爪哇用邻接矩阵存储图的示例代码的文章就介绍到这了,更多相关爪哇邻接矩阵存储图内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: