广度优先搜索,java,队列方式实现

以1为起点,输出结果应该是

1->2->3->5->6->4->7->8


代码:

package 广度遍历;

import java.util.LinkedList;

public class 队列实现 {
    static int visite[]=new int[9];
    static int G[][]={{0},
            {2,3,5},
            {1},
            {1,5,6},
            {5},
            {3,4},
            {3,7,8},
            {6},
            {6}};
    public static void main(String[] args){
        Mqueue q=new Mqueue();
        q.inQueue(1);
        while (!q.isEmpty()){
            //取出队首元素,如果没被访问过则输出
            int data=q.outQueue();
            if(visite[data]!=1){
                System.out.print(data+"->");
                visite[data]=1;
            }
            //讲该元素相邻且未被访问过的元素放入对尾
            for(int i=0;i<G[data].length;i++){
                int lingjie=G[data][i];
                if(visite[lingjie]!=1)
                    q.inQueue(lingjie);
            }
        }
    }
}
class Mqueue{
    private LinkedList<Integer> linkedList=new LinkedList<Integer>();
    public void inQueue(int a){
        linkedList.addLast(a);
    }
    public int outQueue(){
        return linkedList.removeFirst();
    }
    public int front(){
        return linkedList.getFirst();
    }
    public boolean isEmpty(){
        return linkedList.isEmpty();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值