广度优先算法是很多重要图算法中比较简单的一个,它的主要思想是先从源顶点像四周发散查找,先查找距离源顶点距离为k的所有顶点,然后再查找距离为k+1的所有顶点(k = 1,2,3….)。
在广度优先算法中,每个顶点都标色,最初所有顶点都是白色,顶点第一次被发现,则标记为灰色,而黑色标记旁边只能有灰色标记或黑色标记,不能有灰色标记。也就是说一个图以灰黑色逐渐向外扩散。灰色是黑色和白色的隔离带。
typedef struct _Vertex
{
char color;
int vertex;
int distance;
}Vertex;
typedef struct _Node
{
Vertex *pVertex;
struct _Node *parent;
struct _Node *next;
}Node;
typedef struct _AdjacencyList
{
Node *node;
}AdjacencyList;
顶点(Vertex)属性当中:color是顶点的颜色,distance是源点到此顶点的距离,vertex是顶点编号。邻接表(AdjacencyList)中记录的是每个结点的信息,结点信息中包含顶点信息以及父结点和下一个结点,相当于一个单向链表ÿ