您的位置:首页 > 理论基础 > 数据结构算法

数据结构复习(重写某些重要数据结构API) ------------图

2015-03-24 23:23 295 查看
图结构以及它的一些基本操作:

/**
*
*/
package 图;

import java.util.Scanner;

/**
* @author Brighten_Yim
*
*/
class GraphMatrix{//邻接矩阵
static final int Maxnum = 20;//最大点数
static final int Maxvalue = 65335;//无路径时的权值
char[]  V = new char[Maxnum]    ;//点
int[][]  E  = new int[Maxnum][Maxnum];//权值
int type ;//类型  0表示 无向图 1 表示 有向;
int V_num;//点 数
int E_num;//边数
int[] isTraw = new int[Maxnum];//记录遍历

}

public class Graph {
static Scanner input = new Scanner(System.in);

static void createGraph(GraphMatrix GM){//创建图
int i,j,k;
int weight;//权值
char From,To;

System.out.println("输入图的类型,0表示无向图,1表示有向图。");

GM.type = input.nextInt();

System.out.println("输入构成图的各个点:");
for(i = 0;i < GM.V_num ;i++){
System.out.printf("第%d个点为:",i+1);
GM.V[i] = (input.next().toCharArray())[0];

}

System.out.println("输入每条边的顶点以及权值:");
for(j = 0;j<GM.E_num;j++){
System.out.printf("第%d条边:",j+1);
From    = (input.next().toCharArray())[0];
To         = (input.next().toCharArray())[0];
weight = input.nextInt();
for(i = 0;From!=GM.V[i];i++);
for(k =0;To!=GM.V[k];k++);
GM.E[i][j] = weight;
if(GM.type==0){
GM.E[j][i] = GM.E[i][j];
}

}
}

static void clearGraph(GraphMatrix GM){//清空图
for(int i= 0; i<GM.V_num;i++)
for(int j = 0;j<GM.V_num;j++){
GM.E[i][j] =  GM.Maxvalue;  //将两个节点之间的 权值设置为 无路径时的权值,清空图;
}

}

static void DeepTraOne(GraphMatrix GM, int n){//从n节点开始深度遍历

int i;
GM.isTraw
=  1;//设置为 1 表示已经历遍过该节点。

System.out.printf("->%c",GM.V
);
for(i = 0; i<GM.V_num;i++){
if(GM.E
[i]!=GraphMatrix.Maxvalue&&GM.isTraw[i]==0){
DeepTraOne(GM,i);
}
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 graph