Java数据结构与算法《十九》图的搜索

来源:互联网 发布:易语言天龙八部源码 编辑:程序博客网 时间:2024/05/16 07:57
图的搜索是指从一个指定顶点可以到达哪些顶点2.搜索的分类深度优先搜索DFS广度优先搜索BFS深度优先搜索规则如果可能 访问一个临街的未访问过的顶点 标记它 把它放入栈中当不能执行规则1时候 如果栈不能空 就从栈弹出一个顶点3.如果不能执行规则1和规则2是就完成了整个搜索过程深度优先搜索代码实现广度搜索优先规则 从队列的头部进行查看 尾部进行插入1.访问下一个临街的为访问过的顶点 那么这个顶点必须是当前节点的临界点 标记它 并把它插入到队列当中2.如果无法执行规则1 那么久从队列头取出一个顶点 并使其作为当前顶点3.当前队列不能我空 执行规则2时 就完成了整个搜索过程
//顶点类public class Vertex{    private char label;    public boolean wasVisited;    public Vertex(){        this.label=label;    }}//图public class Graph{    //顶点数组    private Vertex[] vertexList;    //邻接矩阵    private int[][] adjMat;    //当前顶点    private int nVertex;    //栈    private MyStack stack;    public Graph(){        vertexList = new Vertex[maxSize];        adjMat = new int[maxSize][maxSize];        for(int i=0;i<maxSize;i++){            for(int i=0;j<maxSize;i++){                adjMat[i][j]=0;            }        }        nVertex =0;    }    //添加顶点    public void addVertex(char label){        vertexList[nVertex++] = new vertexList(label);    }    //添加边    public void addEdge(int start,int end){        adjMat[start][end] =1;        adjMat[end][start]=1;    }    public int getadjUnvisiedVertex(int v){        for(int i=0;i<nVertex;i++){            if(adj[v][i]==1&&vertexList[i].wasVisited==true){                return i;            }        }        return -1;    }    //图的搜索    public void dfs(){        //首先访问0号顶点        vertexList[0].wasVisited =true;        //显示该顶点        displayVertex(0);        //压入栈中        stack.push(0);        while(!stack.isEmpty){            //获得一个为访问过的邻接点            int v =getadjUnvisiedVertex((int)stack.peek());            if(v==-1){                //弹出一个顶点                stack.pop();            }else{                vertexList[v].wasVisited=true;                displayVertex(v);                stack.push(v);            }        }        //搜索完成以后 要将访问信息修改        for(int i=0;i<nVertex;i++){            vertexList[i].wasVisited=false;        }    }    public void displayVertex(int v){        System.out.println(vertexList[v].label);    }}
0 0
原创粉丝点击