实验要求:
针对无向图,通过邻接多重表方式进行存储。以节点A为起始节点,输出图的广度优先遍历的过程。
例如,对下图广度优先遍历的过程为:A-B-D-C-E。
程序输入:
文件data.txt
A,B,C,D,E,F,G,H
A-B
A-C
C-D
C-E
D-E
F-G程序输出:
图的广度优先遍历过程。
1.实验内容
针对无向图,通过邻接多重表方式进行存储。以节点A为起始节点,输出图的广度优先遍历的过程。例如,对下图广度优先遍历的过程为:A-B-D-C-E。

2.实验目的
1.掌握无向图的邻接多重表存储结构。
2.掌握图的广度优先搜索算法。
3.邻接多重表定义
当用邻接表存储时,访问或删除一条边(Vi,Vj) 时需要同时访问两个链表i 和j 并分别找到对应的边结点,这给针对图的边的操作(标记或删除)带来不便利。邻接多重表因此而演变过来的。
定义邻接多重表类GraphMultiplyTable ,类中有三个内部类Vertex、Edge、GraphEdge 。Vertex 为图的顶点类;String 类型的属性vName 指明了该顶点的标签,Edge 的属性firstEdge 存储第一条边的指针;int 类型的color 表明当前结点的颜色,用于遍历时使用。
/**
* vName-->顶点名称
* firstEdge-->顶点边链表的头结点
*/
public static class Vertex
{
private String vName;
private Edge firstEdge;
private int color;
public String getvName()
{
return vName;
}
public int getColor()
{
return color;
}
public void setColor(int color)
{
this.color = color;
}
public Vertex(String name)
{
this.vName = name;
}
public Edge getFirstEdge()
{
return firstEdge;
}
}
Edge 类为图的边类,int 类型的属性iVex 和jVex 指明了当前边所连的两个结点在结点列表中的索引;Edge 类型的属性iLink 和jLink 保存两个顶点的边链表指针。
/**
* iVe

本文介绍了一种无向图的邻接多重表存储方式,并实现了基于此结构的广度优先搜索(BFS)算法。通过具体实例展示了如何初始化图结构并进行遍历,最终输出图的广度优先遍历过程。

最低0.47元/天 解锁文章
886

被折叠的 条评论
为什么被折叠?



