无权图的最短路径

思路:无权图的最短路径也就是要求两点之间最少几跳可达,那么我们可以这样,用广度遍历,从起点开始一层层遍历,如果第一次遍历到终点,那么肯定是最短路径。

 
    public static void findPath(int start,int end)
    {        //创建一个队列来存储
        LinkedList< VNode> queue=new LinkedList<VNode>();        queue.offer(nodes[start]);        
        
        while(!queue.isEmpty())
        {
            VNode vnode=queue.peek();
            isVisit[vnode.index]=true;
            BNode bnode=vnode.bnode;            //如果结束点已经访问 跳出循环
            if(isVisit[end])                break;            //如果他的邻节点都访问或者没有邻节点 跳出循环
            while(bnode!=null)
            {                //如果邻节点还没被访问访记录他的上一节点,否则不进行记录。这样的话即使到了下一跳有这个顶点,记录的也是更的短路径,比如说起点A 邻节点有BCD B的邻节点是C,此时遍历A的邻节点C的时候,就记录C的上一节点是A,下次遍历B的领节点,因为C已经被访问,所以C记录的上一节点还是A,这样就保证了最短路径。
                if(!isVisit[bnode.index])
                {&nb