标签:span 它的 matrix int blob 无向图 png ast 结构
1.用邻接矩阵实现无向图
2.用十字链表实现无向图
3.实现PP19.9
完用邻接矩阵实现无向图
AdjMatrixGraph
用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
顶点类Vertex
:图由顶点和边两种要素构成,在邻接矩阵实现的无向图里面边由一个矩阵就可以表示出由某一顶点指向的另一个顶点的边是否存在以及这条边的长度,而顶点需要单独一个类来盛放这个顶点的相关属性。
其中要有它所盛放的数据以及它是否被访问过两种基本属性。可以根据情况写出方法来更改它的数据,访问它,以及给出打印时候的格式。不考虑封装的话可以直接将wasVisited
变成公共的.
public class Vertex<T> {
private Comparable data;
public boolean wasVisited;
public Vertex(Comparable data){
this.data = data;
wasVisited = false;
}
public void setData(Comparable a){
data = a;
}
public String toString(){
return data+"";
}
}
添加边setLine()
和删除边的removeLine()
方法:在AdjMatrixGraph
里面边被都在在一个二维数组里面所以再添加和删除的时候就可以直接对这个数组进行操作。因为是无向图,所以再添加和删除的时候要处理两个方向的操作。
public void addLines(int a, int b, int weigt) {
if (lines[a][b] != 0)
System.out.println("The line has been set!");
lines[a][b] = weigt;
lines[b][a] = weigt;
}
public void removeLines(int a, int b) {
if (lines[a][b] == 0)
System.out.println("The line has been remove!");
lines[a][b] = 0;
lines[b][a] = 0;
}
添加顶点的setVertex()
方法和删除顶点的removeVertex()
方法
添加顶点的setVertex()
方法和删除顾点的remoeVertex0
方法: 添加顶点的方法比较简单,直接在数组里面放入一个新的顶点即可。
在删除顶点的时候首先要考虑到删除的顶点是否存在,然后执行两个动作一是要把与它相连的边删除,二是要把与它后面的数据移动位置。
首先是对于异常情况的处理,当删除不存在的顶点的时候可以抛出异常,也可以使用f判断语句来避免异常代码的执行
if (a > count)
System.out.println("We don‘t have enough data");
else {};
标签:span 它的 matrix int blob 无向图 png ast 结构
原文地址:http://www.cnblogs.com/yangjingdian/p/7899233.html