图的邻接矩阵存储
来源:互联网 发布:淘宝购买流程 编辑:程序博客网 时间:2024/05/16 05:48
一般的图会使用二元组的方式来描述,G=(V,E) ,其中V 叫作顶点集,E叫作边集。
图分为: (1)无向图 (2)有向图
图的表示和存储方式: (1)邻接矩阵表示法 (2)邻接表表示法
邻接矩阵:存储为二维数组,假设一个图的顶点集的个数为V,则这个二维数组就是V*V的二维数组。
在邻接矩阵的表示法中,数组的每个元素要么是0,要么是1.
图的邻接矩阵存储的实现代码如下:
package com.threeTop.www;public class MatrixGraph {//通过下标映射元素值private int[] mapping;//图的二维数组private int[][] matrix;/** * 初始化图的顶点 * @param vertexes 顶点数组 */ public MatrixGraph(int []vertexes) { int length=vertexes.length; mapping=new int[length]; matrix=new int[length][length]; //图的二维矩阵 for(int i=0;i<length;i++) {mapping[i]=vertexes[i]; } } /** * 添加边 * @param start * @param end */ public void addEdge(int start,int end) { int x=-1; int y=-1; //寻找坐标 for(int i=0;i<mapping.length;i++) { if(x!=-1&&y!=-1) { break; } if(start==mapping[i]) { x=i; } if(end==mapping[i]) { y=i; } } //判断顶点是否存在 if(x==-1||y==-1||x>mapping.length-1||y>mapping.length-1) { throw new IndexOutOfBoundsException("边的顶点不存在!"); } //增加边 matrix[x][y]=1; } /** *输出矩阵 * */ public void printMatrix() { System.out.println("输出的邻接矩阵如下:"); for(int i=0;i<matrix.length;i++) { for(int j=0;j<matrix[i].length;j++) { //输出一行的数据 System.out.print(matrix[i][j]); } System.out.println(); } }public static void main(String []args){int[] vetexes={0,1,2,3};MatrixGraph graph=new MatrixGraph(vetexes);graph.addEdge(0, 1);graph.addEdge(0, 2);graph.addEdge(0, 3);graph.addEdge(1, 2);graph.addEdge(3, 2);graph.printMatrix();}}
0 0
- 图的存储-邻接矩阵
- 图的邻接矩阵存储
- 邻接矩阵存储的图
- 图的存储-邻接矩阵
- 图的邻接矩阵存储
- 图的邻接矩阵存储
- 图的邻接矩阵存储结构
- 图的邻接矩阵存储操作
- 图的数组(邻接矩阵)存储
- 图的存储结构 邻接矩阵
- 图的存储结构 --- 邻接矩阵
- 图的邻接矩阵存储结构
- _DataStructure_C_Impl:图的邻接矩阵存储
- 图的存储结构-邻接矩阵
- 【数据结构】图的存储--邻接矩阵
- 图的存储结构-邻接矩阵
- 图的邻接矩阵存储实现
- 图的邻接矩阵存储 编程实现
- jQuery的全局API
- gcc 提供的原子操作 __sync_xxx
- Linux内核学习总结
- 4.22
- 简析Map及Map集合的遍历解析、排序
- 图的邻接矩阵存储
- 2017.4.22 loli测试
- Spring+Hibernate+Atomikos集成构建JTA的分布式事务--解决多数据源跨库事务
- 杂谈
- 三. Typora:简单高效的 Markdown 编辑器
- android中,给dialog添加动画
- ssh免密码登陆设置时Authentication refused: bad ownership or modes错误解决方法
- Django学习2-使用模板
- PAT乙级1062