7.3邻接矩阵图类·邻接矩阵图类AdjMWGraph的设计class AdjMWGraph[const int maxWeight = 10000:/存储结点的顺序表private SeqList vertices;/存储边的二维数组private int[,J edge;/边的个数private int numOfEdges;
7.3 邻接矩阵图类 • 邻接矩阵图类AdjMWGraph的设计 class AdjMWGraph{ const int maxWeight = 10000; private SeqList vertices; //存储结点的顺序表 private int[,] edge; //存储边的二维数组 private int numOfEdges; //边的个数
publicAdjMWGraph(intmaxV)i//构造函数,maxV为结点个数vertices = new SeqList(maxV);edge = new int[maxV, maxV];for (inti = 0; i< maxV; i++)for (int j = O; j< maxV; j++)(0888880if (i == j)88888088888edge[i, j] = O;088888else0808888088888edge[i, jl = maxWeight;7numOfEdges=0;7
public AdjMWGraph(int maxV){ //构造函数,maxV为结点个数 vertices = new SeqList(maxV); edge = new int[maxV, maxV]; for (int i = 0; i < maxV; i++){ for (int j = 0; j < maxV; j++){ if (i == j) edge[i, j] = 0; else edge[i, j] = maxWeight; } } numOfEdges = 0; } 0 ∞∞ ∞ ∞ ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ 0
/返回结点个数public int getNumOfVerticesOreturn vertices.getSizeO:/返回边的个数public int getNumOfEdgesOreturn numOfEdges;public Object getValue(int v)//返回序号为v的结点的数据元素return vertices.getData(v);
public int getNumOfVertices(){ //返回结点个数 return vertices.getSize(); } public int getNumOfEdges(){ //返回边的个数 return numOfEdges; } public Object getValue(int v){ //返回序号为v的结点的数据元素 return vertices.getData(v); }
public int getWeight(int vl, int v2) //返回边<vl,v2>的权值if (v1 < 0 Il v1 >= vertices.getSize0 II v2 < 0 I/ v2 >:vertices.getSizeO)thrownewException("参数v1或v2越界出错!");return edge[vl, v2];public void insertVertex(Object vertex) //插入结点vertices.insert(vertices.getSizeO, vertex);^
public int getWeight(int v1, int v2){ //返回边<v1,v2>的权值 if (v1 < 0 || v1 >= vertices.getSize() || v2 < 0 || v2 >= vertices.getSize()) throw new Exception("参数v1或v2越界出错!"); return edge[v1, v2]; } public void insertVertex(Object vertex){ //插入结点 vertices.insert(vertices.getSize(), vertex); }
public void insertEdge(int vl, int v2, int weight)/插入边<vl,v2>,权值为weightif (v1 < 0 II v1 >= vertices.getSize0 Il v2 < 0 Il v2 >:vertices.getSizeO)thrownewException("参数v1或v2越界出错!")://置边的权值edge[v1, v2] = weight;/边的个数加1numOfEdges++;
public void insertEdge(int v1, int v2, int weight) { //插入边<v1,v2>,权值为weight if (v1 < 0 || v1 >= vertices.getSize() || v2 < 0 || v2 >= vertices.getSize()) throw new Exception("参数v1或v2越界出错!"); edge[v1, v2] = weight; //置边的权值 numOfEdges++; //边的个数加1 }