BFS--点到点间的最短路径

本文介绍了使用BFS(广度优先搜索)算法求解图中两点间最短路径的方法。首先定义了图的邻接链表结构,接着通过初始化队列、标记访问状态以及遍历搜索来寻找路径。最后,通过示例展示了如何在C语言中实现这一过程。
摘要由CSDN通过智能技术生成
# 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值