图的基本概念(一)

图的基本概念


1.什么是图
图是一种和树相象的数据结构,通常有一个固定的形状,这是由物理或抽象的问题来决定的。
2.邻接
如果两个顶点被同一条边连接,就称这两个顶点是邻接的。

3.路径
路径是从一个顶点到另一个顶点经过的边的序列。

4.连通图和非连通图
至少有一条路径可以连接所有的顶点,那么这个图就是连通的,否则是非连通的。

5.有向图和无向图
有向图的边是有方向的,如只能从A到B,不能从B到A。
无向图的边是没有方向的,可以从A到B,也可以从B到A。

6.带权图
在有些图中,边被赋予了一个权值,权值是一个数字,它可以代表如两个顶点的物理距离,或者是一个顶点到另一个顶点的时间等等.这样的图叫做带权图.

7.用程序来实现图.

(1) 数组表示法




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);
}
}




  • 相关文章:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值