图的广度优先搜索遍历 -- c语言

图的广度优先搜索遍历,以我的理解是:先以一个顶点做起点,一层一层的进行输出打印。
这里引用书上的一个例子。
在这里插入图片描述
完整代码如下(邻接表的形式):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MVNum 100 //最大顶点数 
//创建一个中断函数 
void Interrupt(void)//创建一个中断函数 
{
   
	while(1)//用于检测换行符,使函数脱离scanf的连续输出 
		if(getchar()=='\n')
			break;
} 
//引入队列,这里是顺序队列 
typedef struct
{
   
	int data[MVNum];//分配给队列一个数组空间 
	int front;//队列头 
	int rear;//队列尾 
}SqQueue;

void InitQueue(SqQueue &Q)//初始化队列 
{
   
	Q.front = Q.rear = 0;//使队列头和队列尾都为0 
}

void EnQueue(SqQueue &Q,int e)//入队 ,由于是循环队列,故少用一个元素空间,该函数在有MAXSIZE-1个元素时便已判断为满 
{
   
	if((Q.rear+1)%MVNum == Q.front)//判断队列是否为满 ,这里是循环队列队列满的条件是 (Q.rear+1)%MAXSIZE == Q.front
	{
   
		printf("队列已满!\n");
	}
	else
	{
   
		if(Q.rear == MVNum)//如果队尾超出最大值但队列又不满,便使其对最大值求余运算 
			Q.rear = Q.rear%MVNum;
		Q.data[Q.rear] = e;//使变量e的值入队 
		Q.rear++;//并使队尾加一 
	}
}

bool QueueEmpty(SqQueue Q)//队列判空操作 
{
   
	if(Q.front == Q.rear)//如果队列为空,返回true,否则返回false 
		return true;
	else
		return false;
}

int DeQueue(SqQueue &Q)//出队 
{
   
	int a =<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值