# include <stdio.h>
# include <malloc.h>
# include <memory.h>
# define MAX 20 //最大顶点数
typedef struct ARCNODE
{
int num; //该边所指的顶点的位置
struct ARCNODE * next; //指向下一条边的指针
}arcnode; //表的结点
typedef struct Vnode
{
char data; //顶点信息
arcnode * firstarc; //指向第一条依附该顶点的边的弧指针
}VNODE,adjvex[MAX]; //头结点
typedef struct
{
adjvex vertices;
bool visited[MAX]; //访问标志数组
int arcnum,vexnum; //图的当前结点数和弧数
}mgraph;
typedef struct Qnode
{
char data;
struct Qnode * pre;
struct Qnode * next;
}qnode,*queueptr; //创建队列结点
typedef struct
{
queueptr front; //队头指针
queueptr rear; //队尾指针
}linkqueue; //创建队列
void initqueue(linkqueue *q) //初始化队列
{
q->front = (queueptr)malloc(sizeof(qnode)); //队头队尾指向头结点
if (!q->front)
{
printf ("无效图\n"); //分配失败
}
else
{
q->front->next = NULL;
q->rear = q->front;
}
}
void Enqueue(linkqueue *q,char value) //入队函数
{
queueptr newp = (queuep
BFS--点到点间的最短路径
最新推荐文章于 2022-08-31 11:13:11 发布
本文介绍了使用BFS(广度优先搜索)算法求解图中两点间最短路径的方法。首先定义了图的邻接链表结构,接着通过初始化队列、标记访问状态以及遍历搜索来寻找路径。最后,通过示例展示了如何在C语言中实现这一过程。
摘要由CSDN通过智能技术生成