文档详情

java图的建立与遍历..doc

发布:2017-12-10约4.66千字共5页下载文档
文本预览下载声明
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
显示全部
相似文档