1. /**
  2. *
  3. * 图的邻接矩阵实现
  4. * @author John
  5. *
  6. * @param <T>
  7. */
  8. class AMWGraph<T> {
  9. private ArrayList<T> vertexList;//存储点的链表
  10. private int[][] edges;//邻接矩阵,用来存储边
  11. private int numOfEdges;//边的数目
  12.  
  13. public AMWGraph(int n) {
  14. //初始化矩阵,一维数组,和边的数目
  15. edges=new int[n][n];
  16. vertexList=new ArrayList<T>(n);
  17. numOfEdges=0;
  18. }
  19.  
  20. //得到结点的个数
  21. public int getNumOfVertex() {
  22. return vertexList.size();
  23. }
  24.  
  25. //得到边的数目
  26. public int getNumOfEdges() {
  27. return numOfEdges;
  28. }
  29.  
  30. //返回结点i的数据
  31. public Object getValueByIndex(int i) {
  32. return vertexList.get(i);
  33. }
  34.  
  35. //返回v1,v2的权值
  36. public int getWeight(int v1,int v2) {
  37. return edges[v1][v2];
  38. }
  39.  
  40. //插入结点
  41. public void insertVertex(T vertex) {
  42. vertexList.add(vertexList.size(),vertex);
  43. }
  44.  
  45. //插入结点
  46. public void insertEdge(int v1,int v2,int weight) {
  47. edges[v1][v2]=weight;
  48. numOfEdges++;
  49. }
  50.  
  51. //删除结点
  52. public void deleteEdge(int v1,int v2) {
  53. edges[v1][v2]=0;
  54. numOfEdges--;
  55. }
  56.  
  57. //得到第一个邻接结点的下标
  58. public int getFirstNeighbor(int index) {
  59. for(int j=0;j<vertexList.size();j++) {
  60. if (edges[index][j]>0) {
  61. return j;
  62. }
  63. }
  64. return -1;
  65. }
  66.  
  67. //根据前一个邻接结点的下标来取得下一个邻接结点
  68. public int getNextNeighbor(int v1,int v2) {
  69. for (int j=v2+1;j<vertexList.size();j++) {
  70. if (edges[v1][j]>0) {
  71. return j;
  72. }
  73. }
  74. return -1;
  75. }
  76. }

Java图的邻接矩阵实现的更多相关文章

  1. java 图的邻接矩阵

    有向图 在有向图中,结点对<x ,y>是有序的,结点对<x,y>称为从结点x到结点y的一条有向边,因此,<x,y>与<y,x>是两条不同的边.有向图中的 ...

  2. 数据结构Java版之邻接矩阵实现图(十一)

    邻接矩阵实现图,是用一个矩阵,把矩阵下标作为一个顶点,如果顶点与顶点之间有边.那么在矩阵对应的点上把值设为 1 .(默认是0) package mygraph; import java.util.Li ...

  3. 数据结构(12) -- 图的邻接矩阵的DFS和BFS

    //////////////////////////////////////////////////////// //图的邻接矩阵的DFS和BFS ////////////////////////// ...

  4. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

  5. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

  6. 二十七、Java图形化界面设计——容器(JFrame)

    摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...

  7. 三十三、Java图形化界面设计——布局管理器之null布局(空布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...

  8. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

  9. 图的邻接矩阵实现(c)

    参考:算法:c语言实现 一书 图的邻接矩阵实现 #ifndef GRAPH #define GRAPH /* 图的邻接矩阵实现 */ #include<stdio.h> #include& ...

随机推荐

  1. String与Date(java.util.Date)互转(转)

    http://yunnick.iteye.com/blog/1074495 一.String与Date(java.util.Date)互转 1.1 String -> Date String d ...

  2. 优秀的PE工具收藏

    优秀的PE工具收藏... ----------------------- ------------------------------------------<排名不分先后..自己喜欢的就是最好 ...

  3. 获取当前页面URL信息

    文章链接:http://www.cnblogs.com/hongmaju/p/5510988.html 查看信息可以在控制台输出(tab或者右移补全): 如:document.URL  window. ...

  4. python_控制台输出带颜色的文字方法

    在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想要的信 ...

  5. 如何使用 flannel host-gw backend?- 每天5分钟玩转 Docker 容器技术(62)

    flannel 支持多种 backend,前面我们讨论的是 vxlan,host-gw 是 flannel 的另一个 backend,本节会将前面的 vxlan backend 切换成 host-gw ...

  6. 虚拟机下安装VMware Tools

    使用虚拟机安装第二操作系统,是我们经常使用到的一种方法,但是为了能够在虚拟机与本地操作系统间进行文件共享,我们可以借助一款非常实用的工具VMware Tools.下面我们就来说一下怎样安装VMware ...

  7. BeautifulSoup练习第一节

    一.pip install beautilfulsoup4 二.主要使用html.parser这个python标准库 三.打印首页博客的时间.打印摘要 # coding:utf-8from bs4 i ...

  8. [js高手之路]深入浅出webpack教程系列8-(postcss-loader,autoprefixer,html-loader,less-loader,ejs-loader)用法

    我们接着上文,那么在上篇文章的最后,写到了css-loader的用法,如果你用心发现,就能看到我在style.css样式文件中写了一个这样的样式: div { transition: all ease ...

  9. Spring Cloud Netflix多语言/非java语言支持之Spring Cloud Sidecar

    Spring Cloud Netflix多语言/非java语言支持之Spring Cloud Sidecar 前言 公司有一个调研要做,调研如何将Python语言提供的服务纳入到Spring Clou ...

  10. websocket实现简单聊天程序

    程序的流程图: 主要代码: 服务端 app.js 先加载所需要的通信模块: var express = require('express'); var app = express(); var htt ...