图的基本概念
1.什么是图
图是一种和树相象的数据结构,通常有一个固定的形状,这是由物理或抽象的问题来决定的。
2.邻接
如果两个顶点被同一条边连接,就称这两个顶点是邻接的。
3.路径
路径是从一个顶点到另一个顶点经过的边的序列。
4.连通图和非连通图
至少有一条路径可以连接所有的顶点,那么这个图就是连通的,否则是非连通的。
5.有向图和无向图
有向图的边是有方向的,如只能从A到B,不能从B到A。
无向图的边是没有方向的,可以从A到B,也可以从B到A。
6.带权图
在有些图中,边被赋予了一个权值,权值是一个数字,它可以代表如两个顶点的物理距离,或者是一个顶点到另一个顶点的时间等等.这样的图叫做带权图.
7.用程序来实现图.
1.什么是图
图是一种和树相象的数据结构,通常有一个固定的形状,这是由物理或抽象的问题来决定的。
2.邻接
如果两个顶点被同一条边连接,就称这两个顶点是邻接的。
3.路径
路径是从一个顶点到另一个顶点经过的边的序列。
4.连通图和非连通图
至少有一条路径可以连接所有的顶点,那么这个图就是连通的,否则是非连通的。
5.有向图和无向图
有向图的边是有方向的,如只能从A到B,不能从B到A。
无向图的边是没有方向的,可以从A到B,也可以从B到A。
6.带权图
在有些图中,边被赋予了一个权值,权值是一个数字,它可以代表如两个顶点的物理距离,或者是一个顶点到另一个顶点的时间等等.这样的图叫做带权图.
7.用程序来实现图.
(1) 数组表示法
![]()
Vertex.java
Graph.java
TestGraph.java
Vertex.java
packagech18;
/**
*顶点类
*@author gzw
*
*/
publicclassVertex{
privatecharlabel; //表示A,B,C,D,E,F... ...等顶点
publicVertex(charlabel){
this.label=label;
}
}
Graph.java
packagech18;
/**
*图
*@authorAdministrator
*
*/
publicclassGraph{
//顶点数组
privateVertex[]vertexList;
//邻接矩阵
privateint[][]adjMat;
//顶点的最大数目
privateintmaxSize;
//当前顶点
privateintnVertex;
publicGraph(int maxSize){
this.maxSize = maxSize;
vertexList = new Vertex[maxSize];
vertexList=newVertex[maxSize];
adjMat=newint[maxSize][maxSize];
for(inti=0;i<maxSize;i++){
for(intj=0;j<maxSize;j++){
adjMat[i][j]=0; //初始条件:所有顶点都不相连(无边)
}
}
nVertex=0;
}
/**
*添加顶点
*/
publicvoidaddVertex(charlabel){
vertexList[nVertex++]=newVertex(label);
}
/**
*添加边
*/
publicvoidaddEdge(intstart,intend){
adjMat[start][end]=1;
adjMat[end][start]=1;
}
}
TestGraph.java
packagech18;
publicclassTestGraph{
publicstaticvoidmain(String[]args){
/*Graphg=newGraph();
g.addVertex('A');
g.addVertex('B');
g.addVertex('C');*/
char[] vertexs = new char[]{'A','B','C'};
//初始化顶点
for(int i=0;i<vertex.length;i++){
g.addVertex(vertex[i]);
}
//初始化边
g.addEdge(0,1);
g.addEdge(0,2);
g.addEdge(1,2);
}
}