java图的建立与遍历..doc
文本预览下载声明
package test.table;
public class GraphTraverse
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println(Generating the graph ... );
Graph g = new Graph();
g.addVertex(a);
g.addVertex(b);
g.addVertex(c);
g.addVertex(d);
g.addVertex(e);
g.addEdge(0,1);
g.addEdge(0,2);
g.addEdge(0,3);
g.addEdge(1,4);
g.addEdge(2,3);
g.addEdge(2,4);
System.out.println(The graph matrix is:);
g.showGraphyMatrix();
System.out.println(DFS of the graph:);
g.dfs();
System.out.println(End);
System.out.println(BFS of the graph:);
g.bfs();
System.out.println(End);
System.out.println(DFS of the graph by recursion:);
g.dfsTraverse();
System.out.println(End);
}
}
//用于实现深度优先搜索的栈类
class StackX
{
private final int SIZE=20;
private int[] st;
private int top;
public StackX(){
st=new int[SIZE];
top=-1;
}
public void push(int j){
st[++top]=j;
}
public int pop(){
return st[top--];
}
public int peek(){
return st[top];
}
public boolean isEmpty(){
return top==-1;
}
}
//用于实现广度优先搜索的队列类
class Queue
{
private final int SIZE=20;
private int[] queArray;
private int front;
private int rear;
public Queue(){
queArray=new int[SIZE];
front=0;
rear=-1;
}
public void insert(int j){
if(rear==SIZE-1)
rear=-1;
queArray[++rear]=j;
}
public int remove(){
int temp=queArray[front++];
if(front==SIZE)
front=0;
return temp;
}
public boolean isEmpty(){
return ((rear+1==front)||(front+SIZE-1==rear));
}
}
//顶点类
class Vertex
{
public char label;
public boolean wasVisited;
public Vertex(char lab){
label=lab;
wasVisited=false;
}
}
//图类
class Graph
{
private final int MAX_VERTS=20;
private Vertex vertexList[];
private int adjMat[][];
private
显示全部