以邻接矩阵存储的图类:深度优先

来源:互联网 发布:真趣网络 蔡智 编辑:程序博客网 时间:2024/06/05 05:29

代码实现

/** *  */package test;/** *  * @author Jeffrey * @date   2017年5月3日 * @weibo  ouc大飞 * @qq     1020724110 */public class Graph1 {//以邻接矩阵存储的图类    protected int n;//节点的个数    protected int mat[][];//二维数组存储图的邻接矩阵    protected int visited[];//访问标记数组    public Graph1(int m1[][]){        n=m1.length;        mat=new int [n][n];        //mat=m1;        System.arraycopy(m1, 0, mat, 0, n);        visited=new  int[n];    }    public Graph1(){    }    public void depthFirstSearch(){ //图的深度优先遍历        System.out.println("深度优先遍历Depth first search:");        for(int k=1;k<=n;k++){        depthfs(k);        System.out.println();        unvisited();        }        }    private void depthfs(int k) { //从节点k开始的深度优先遍历        int i,j=0;        System.out.print(" v"+k+"->");        i = k - 1;        visited[i]=1;        while(j<n){        if(mat[i][j]==1 && visited[j]==0){        depthfs(j+1);        }else {        j++;        }        }        }    private void unvisited() {        int i;        for(i = 0;i<visited.length;i++){        visited[i]=0;        }        }    public static void main(String[] args) {        int mat1[][]={{0,1,0,1},            //无向图G6的邻接矩阵                 {1,0,1,1},                {0,1,0,1},                {1,1,1,0}};        Graph1 g1=new Graph1(mat1);        g1.depthFirstSearch();    }}
0 0
原创粉丝点击