图的邻接表创建和图的遍历

实验题目

图的邻接表创建和图的遍历

实验目的

  • 掌握图的邻接矩阵、邻接表的存储方法;
  • 掌握基于邻接表的图的基本运算的实现;
  • 掌握图的深度优先遍历和广度优先遍历过程;
  • 理解深度优先和广度优先遍历的算法。

实验内容

  1. 由给定的图的邻接矩阵建立图的邻接表并显示输出邻接表的表示;
  2. 给出从结点a开始的图的深度优先遍历序列;
  3. 给出从结点d开始的图的广度优先遍历序列。

实验要求

  1. 由图的邻接矩阵建立邻接表;
  2. 求图的深度优先遍历序列;
  3. 求图的广度优先遍历序列。

实验过程记录

1. 建立图的邻接表并显示

①新建项目,项目里新建文件“AdjGraph.h”。

在该文件里分别定义数据类型:图的边结点类型ArcNode、表头结点类型VNode和邻接表类型AdjGraph如下:

typedef char InfoType;
#define MAXV 10
#define INF 32767
ArcNode:               
VNode:               
AdjGraph:              
②“AdjGraph.h”里,实现由邻接矩阵建立邻接表的创建图的运算算法CreateAdj。
③“AdjGraph.h”里,实现输出图的运算算法DispAdj。
④“main.cpp”里,定义给定图的顶点信息和邻接矩阵如下(补充邻接矩阵初始化):
#define N 5	//顶点个数  
//定义顶点信息
char vex[N] = {'a','b','c','d','e'}; 
//*定义邻接矩阵(带权有向图) 
int A[N][N] = {



};
⑤“main.cpp”里,定义图指针变量如下:
AdjGraph *G;
⑥“main.cpp”里,调用创建图、显示图运算如下:
CreateAdj(G,A,vex,5,7);
DispAdj(G);
printf("图顶点数和边数分别为:(%d,%d)",G->n,G->e);
2. 深度优先遍历
①“AdjGraph.h”里,实现深度优先遍历算法DFS。
②“main.cpp”里,调用算法如下:
//*深度优先遍历算法 
printf("\n\n\n深度优先遍历:");
DFS(G,0);
③思考:如果从b点开始,将上面的“DFS(G,0);”改成“DFS(G,1);”,执行结果是否正确,为什么?应如何修改?
3. 广度优先遍历
①在项目里添加文件“LinkQueue.h”。
②“AdjGraph.h”里,#include “LinkQueue.h”。
③“AdjGraph.h”里,实现广度优先遍历算法BFS。
④“main.cpp”里,调用算法如下:
printf("\n\n\n广度优先遍历:");
BFS(G,0);
4. 测试结果
① 给出从结点a开始的图的深度优先遍历序列的运行截图。
②. 给出从结点d开始的图的广度优先遍历序列的运行截图。
实验总结(个人心得)
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值