蓝桥-图4-linkedlist广度优先搜索

来源:互联网 发布:域名怎么注册 编辑:程序博客网 时间:2024/06/09 14:24
package com.jkxy.photo;import java.util.LinkedList;public class WideTraversePackage {    static int  e[][]={{0,0,0,0,0,0},            {0,0,1,1,99,1},            {0,1,0,99,1,99},            {0,1,99,0,99,1},            {0,99,1,99,0,99},            {0,1,99,1,99,0}};static int book[]={0,0,0,0,0,0,0,0,0,0,0};static int cur,i,j=0;    public static void main(String[] args) {        LinkedList<Integer> q= new LinkedList<Integer>();        q.add(1);        book[1]=1;        while(q.isEmpty()==false){            cur=q.get(j);            for(i=1;i<=5;i++){                if(e[cur][i]==1&&book[i]==0){                    q.add(i);                    book[i]=1;                }                if(q.size()>4){                    break;                }            }            if(q.size()>4){                break;            }            j++;        }        for(i=0;i<=4;i++){    System.out.print(q.get(i));        }    }       }/*用集合类linkedlist对图2广度优先遍历的修改。集合类是个好东西要熟练掌握。目标是泛型与集合类的协同熟练掌握。用linkedlist直接根据自己的思路可以写下来,无需理会队列头尾之类的。1--》1235--》12354首先定义图对应的二维数组,初始化空队列,从顶点1开始,把1加入队列,把1标为已访。队列非空,则循环把与当前访问顶点Cur=q.get(j)编号相连未访过的顶点编号i(循环可能1,2,3,4,5)加入队列,i标为已访。尾巴大于顶点数,break。对i广挖后把头++。最后循环输出队列即可。*/
0 0
原创粉丝点击