/**
*说明:通过邻接链表对图进行深度优先和广度优先的遍历操作
*/
# 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("请输入图
通过创建无向图的邻接链表对无向图进行深度优先和广度优先的遍历操作
最新推荐文章于 2022-12-06 14:44:18 发布