import java.util.Scanner;
/*
* 图的遍历和创建
*/
public class GraphMatrixCS {
static Scanner input =new Scanner(System.in);
//创建邻接矩阵图
static void CreateGraph(GraphMatrix GM){
int i,j,k;
int weight;//权
char EstartV,EendV;//边的起始顶点
System.out.println("输入图中各顶点的信息");
for(i=0;i<GM.VertexNum;i++){
System.out.printf("第%d个顶点:",i+1);
GM.Vertex[i]=(input.next().toCharArray())[0];
}
System.out.println("输入构成各边的顶点及权值");
for(k=0;k<GM.EdgeNum;k++){
System.out.printf("第%d条边",k+1);
EstartV=input.next().charAt(0);
EendV=input.next().charAt(0);
weight=input.nextInt();
for(i=0;EstartV!=GM.Vertex[i];i++);//在已有的顶点中查找开始点
for(j=0;EendV!=GM.Vertex[j];j++);//在已有的顶点中开始查找终结点
GM.EdgeWeight[i][j]=weight;//对应位置保存权值,表示有一条边
if(GM.GType==0){//若是无向图
GM.EdgeWeight[j][i]=weight;//在对角位置保存权值
}
}
}
//清空矩阵
static void ClearGraph(GraphMatrix gm){
for(int i=0;i<gm.VertexNum;i++){
for(int j=0;j<gm.VertexNum;j++){
gm.EdgeWeight[i][j]=GraphMatrix.MaxValue;
}
}
}
//输出邻接矩阵
static void OutGraph(GraphMatrix gm){
for(int i=0;i<gm.VertexNum;i++){
System.out.print(gm.Vertex[i]+" ");
}
System.out.println();
for(int i=0;i<gm.VertexNum;i++){
for(int j=0;j<gm.VertexNum;j++){
if(gm.EdgeWeight[i][j]==GraphMatrix.MaxValue){
System.out.print(" Z");
}else{
System.out.print(" "+gm.EdgeWeight[i][j]);
}
}
System.out.println();
}
}
//深度遍历某个结点
static void DeepTraOne(GraphMatrix gm,int n){
int i;
gm.isTrav[n]=1;
System.out.println(gm.Vertex[n]);
for(i=0;i<gm.VertexNum;i++){
if(gm.EdgeWeight[n][i]!=GraphMatrix.MaxValue && gm.isTrav[n]==0){
DeepTraOne(gm,i);
}
}
}
//深度遍历
static void DeepTraGraph(GraphMatrix gm){
int i;
for(i=0;i<gm.VertexNum;i++){
gm.isTrav[i]=0;
}
System.out.println("深度优先遍历结点");
for(i=0;i<gm.VertexNum;i++){
if(gm.isTrav[i]==0){
DeepTraOne(gm,i);
}
}
}
}
class GraphMatrix{
static final int MaxNum=20;
static final int MaxValue=65535;
char[] Vertex=new char[MaxNum];//保存顶点信息(序号或字母)
int GType;//图的类型(0:无向图;1:有向图)
int VertexNum;//顶点的数量
int EdgeNum;//边的数量
int[][] EdgeWeight=new int[MaxNum][MaxNum];//保存边的权
int[] isTrav=new int[MaxNum];//遍历标志
}
图的遍历和创建
原文作者:数据结构之图
原文地址: https://blog.csdn.net/smj20170417/article/details/70241530
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/smj20170417/article/details/70241530
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。