弱弱的实现了广度优先,以前图方便很少用邻接表的。

本文详细介绍了如何使用广度优先遍历算法对图进行遍历的过程,包括初始化队列、标记节点状态以及遍历节点的邻接节点。通过实例展示了算法的应用,有助于理解广度优先搜索在图论中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;

public class GBreadthTraverse
{
    public void breadthTras(Graph g)
    {

    Queue<Node> queue = new ArrayBlockingQueue<Node>(20);

    Node t = null;
    for (Node n : g.nds)
    {
        Node s = n;
        if (!s.isVisited)
        {
        queue.add(s);
        System.out.println(s.name);
        s.isVisited = true;
        while (!queue.isEmpty())
        {
            {
            t = queue.poll();
            if (t.firstArc != null)
            {
                Arc tarc = t.firstArc;
                if (!tarc.nd.isVisited)
                {
                queue.add(tarc.nd);
                System.out.println(tarc.nd.name);
                tarc.nd.isVisited = true;
                }
                while (tarc.nextArc != null)
                {
                tarc = tarc.nextArc;
                if (!tarc.nd.isVisited)
                {
                    queue.add(tarc.nd);
                    System.out.println(tarc.nd.name);
                    tarc.nd.isVisited = true;
                }
                }
            }
            }
        }
        }
    }
    }

    public static void main(String[] args)
    {
    Graph g = new Graph(8);
    Node ns = new Node();
    Node nr = new Node();
    Node nv = new Node();
    Node nw = new Node();
    Node nt = new Node();
    Node nx = new Node();
    Node ny = new Node();
    Node nu = new Node();
    Arc arc1 = new Arc();
    Arc arc2 = new Arc();
    Arc arc3 = new Arc();
    Arc arc4 = new Arc();
    Arc arc5 = new Arc();
    Arc arc6 = new Arc();
    Arc arc7 = new Arc();
    Arc arc8 = new Arc();
    Arc arc9 = new Arc();
    Arc arc10 = new Arc();
    Arc arc11 = new Arc();
    Arc arc12 = new Arc();
    Arc arc13 = new Arc();
    Arc arc14 = new Arc();
    Arc arc15 = new Arc();
    Arc arc16 = new Arc();
    Arc arc17 = new Arc();
    Arc arc18 = new Arc();
    Arc arc19 = new Arc();
    Arc arc20 = new Arc();
    ns.firstArc = arc1;
    nr.firstArc = arc3;
    nv.firstArc = arc5;
    nw.firstArc = arc6;
    nt.firstArc = arc9;
    nx.firstArc = arc12;
    ny.firstArc = arc16;
    nu.firstArc = arc18;
    ns.name = 's';
    nr.name = 'r';
    nv.name = 'v';
    nw.name = 'w';
    nt.name = 't';
    nx.name = 'x';
    ny.name = 'y';
    nu.name = 'u';
    arc1.nd = nr;
    arc2.nd = nw;
    arc3.nd = ns;
    arc4.nd = nv;
    arc5.nd = nr;
    arc6.nd = ns;
    arc7.nd = nt;
    arc8.nd = nx;
    arc9.nd = nw;
    arc10.nd = nu;
    arc11.nd = nx;
    arc12.nd = nw;
    arc13.nd = nt;
    arc14.nd = nu;
    arc15.nd = ny;
    arc16.nd = nx;
    arc17.nd = nu;
    arc18.nd = nt;
    arc19.nd = nx;
    arc20.nd = ny;
    arc1.nextArc = arc2;
    arc2.nextArc = null;
    arc3.nextArc = arc4;
    arc4.nextArc = null;
    arc5.nextArc = null;
    arc6.nextArc = arc7;
    arc7.nextArc = arc8;
    arc8.nextArc = null;
    arc9.nextArc = arc10;
    arc10.nextArc = arc11;
    arc11.nextArc = null;
    arc12.nextArc = arc13;
    arc13.nextArc = arc14;
    arc14.nextArc = arc15;
    arc15.nextArc = null;
    arc16.nextArc = arc17;
    arc17.nextArc = null;
    arc18.nextArc = arc19;
    arc19.nextArc = arc20;
    arc20.nextArc = null;
    g.nds.add(ns);
    g.nds.add(nr);
    g.nds.add(nv);
    g.nds.add(nw);
    g.nds.add(nt);
    g.nds.add(nx);
    g.nds.add(ny);
    g.nds.add(nu);
    new GBreadthTraverse().breadthTras(g);
    }

}

class Node
{
    public char name;
    public Arc firstArc;
    public boolean isVisited;
}

class Arc
{
    public Node nd;
    public Arc nextArc;
}

class Graph
{
    public int n;
    public List<Node> nds;

    public Graph(int n)
    {
    nds = new ArrayList<Node>(n);
    }
}


WPS Office 2019 是一款功能丰富的办公软件套装,它整合了文字、表格、演示、PDF 等组件,具备体积小巧、功能丰富、兼容性强等特点,能满足日常办公的多种需求。 功能组件丰富:包含 WPS 文字、WPS 演示、WPS 表格、WPS PDF 等组件,可用于文档编辑、表格计算、幻灯片制作、PDF 处理等,支持 DOC、DOCX、XLS、XLSX、PPT 等多种格式,能与 Microsoft Office 较好地兼容。 支持云存储与协作:用户登录 WPS 账号后,可实现多终端、跨平台的数据同步,还能与他人协同办公,文档可通过微信、QQ 等社交平台一键分享。 PDF 功能强大:提供沉浸式 PDF 阅读体验和稳定的编辑服务,支持一键编辑 PDF 文档内容。借助 OCR 技术,可精准转换文档、表格、PPT、片等格式的文件。 界面设计优化:具有全新视觉设计,默认皮肤舒适清爽,还支持桌面背景、界面字体、皮肤、格式标等个性化设置。同时,文档标签可拖拽成独立窗口或合并,用户可自主选择文档显示方式,还能将文件放置在不同工作区,便于分类浏览与管理。 内置实用工具:内置了简单的网页浏览器,点击文档中的链接会默认用其打开,可进行网页添加到首页、另存为 PDF 等操作。此外,“应用中心” 集成了输出转换、文档助手、安全备份等多种实用功能。 模板资源丰富:稻壳商城提供了大量模板、范文、片等素材资源,涵盖求职简历、总结计划、合同协议等常见文档类型,方便用户快速创建专业文档。 表格功能特色突出:支持通过关键词快速切换工作表,设有阅读模式和护眼模式。还可分类合并单元格,以及拆分合并单元格并填充内容。公式编辑器中可轻松完成公式嵌套,筛选时可通过 “仅筛选此项” 一步完成特定值筛选,还能根据筛选条件生成动态分析表。另外,“特色功能” 和 “智能工具箱” 菜单中包含 PDF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值