通过创建无向图的邻接链表对无向图进行深度优先和广度优先的遍历操作

本文详细探讨了如何使用邻接链表表示无向图,并介绍了如何执行深度优先搜索(DFS)和广度优先搜索(BFS)遍历。通过实例解析,阐述了两种遍历方法的关键步骤和区别,帮助读者理解图的遍历算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
*说明:通过邻接链表对图进行深度优先和广度优先的遍历操作
*/ 
# include "stdio.h"
# include "stdlib.h"
#define Max 20
typedef int VexType;
typedef int ElemType;
//邻接链表的组成 
typedef struct Vnode {
	VexType data;
	struct Vnode *next;
}Vnode;
typedef Vnode Lgraph[Max];

//循环队列的组成 
typedef struct {
	ElemType a[Max];
	int front,rear;
}SqQueue;

/**函数声明**/
void creat_L(Lgraph G);   //创建链表 
void out_L(Lgraph G); 	//输出链表 
void dfsL(Lgraph G,int v);  //深度优先遍历 
void bfsL(Lgraph G,int v);   //广度优先遍历 
void init_Q(SqQueue &Q);   //创建空队列 
int EnQueue_Q(SqQueue &Q,ElemType a);  //进队 
int DeQueue_Q(SqQueue &Q,ElemType a);	//出队 
int n,e;
int vis[Max];
Lgraph Ga;
SqQueue Q;

/*主函数*/
int main() {
	creat_L(Ga);
	out_L(Ga);
	int v;
	printf("\n 请输入想要遍历的第一个顶点:");
	scanf("%3d",&v);
	printf("\n");
	printf("深度优先遍历序列为:\n");
	dfsL(Ga,v);
	printf("\n");
	printf("广度优先遍历序列为:\n");
	bfsL(Ga,v); 
	return 0;
}

//创建无向图 
void creat_L(Lgraph G) {
	Vnode *p,*q;
	int i , j , k;
	printf("请输入图
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值