没有合适的资源?快使用搜索试试~ 我知道了~
数据结构——图的基本操作.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 37 浏览量
2021-10-06
08:05:57
上传
评论
收藏 96KB DOC 举报
温馨提示
试读
11页
数据结构——图的基本操作.doc
资源推荐
资源详情
资源评论
- .
1.实验题目
图的根本操作
2.实验目的
1)掌握图的邻接矩阵、邻接表的表示方法。
2)掌握建立图的邻接矩阵的算法。
3)掌握建立图的邻接表的算法。
4)加深对图的理解,逐步培养解决实际问题的编程能力
3.需求分析
(1)编写图根本操作函数。
①建立图的邻接表,邻接矩阵 Create_Graph( LGraph lg. MGraph mg )
②邻接表表示的图的递归深度优先遍历 LDFS( LGraph g, int i )
③邻接矩阵表示的图的递归深度优先遍历MDFS( MGraph g,int i, int vn )
④邻接表表示的图的广度优先遍历 LBFS( LGraph g, int s, int n )
⑤邻接矩阵表示的图的广度优先遍历MBFS(MGraph g, int s, int n )
(2)调用上述函数实现以下操作。
①建立一个图的邻接矩阵和图的邻接表。
②采用递归深度优先遍历输出图的邻接矩阵
③采用递归深度优先遍历输出图的邻接表。
④采用图的广度优先调历输出图的邻接表。
⑤采用图的广度优先遍历输出图的邻接矩阵
4.概要设计
(1) :
/**********************************图的根本操作**********************************/
//------------------------------- 邻接矩阵数据类型的定义--------------------------------
// 最大顶点个数
typedef struct
{
char vexs[MAX_VERTEX_NUM]; // 顶点向量
int acrs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vexnum,arum; // 图当前顶点数和弧数
}MGraph ;
//--------------------------------邻接表数据类型的定义----------------------------------
typedef struct Arode
{
. -可修遍-
- -
int adjvex; // 该弧所指向的顶点的位置
struct Arode *nextarc; // 指向下一条弧的指针
}Arode;
typedef struct VNode
{
char data; // 顶点信息
Arode *=rstarc; // 指向第一条依附该顶点的弧的指针
}VNode, AdjList[MAX_VERTEX_NUM];
typedef struct
{
AdjList vertices;
int vexnum,arum; // 图当前顶点数和弧数
}LGraph;
(2) 本程序主要包含 6 个函数:
主函数 main()
建立图的邻接矩阵,邻接表 Create_Graph()
邻接表表示的图的递归深度优先遍历 LDFS()
邻接矩阵表示的图的递归深度优先遍历 MDFS()
邻接表表示的图的广度优先遍历 LBFS()
邻接矩阵表示的图的广度优先遍历 MBFS〔〕
各函数间调用关系如下:
(3) 主函数的伪码
main()
{ 定义邻接矩阵和邻接表;
建立邻接矩阵和邻接表;
邻接矩阵 MDFS 深度优先遍历;
邻接矩阵 MBFS 广度优先遍历 ;
邻接表 LDFS 深度优先遍历;
邻接表 LBFS 广度优先遍历
}
- - word.zl-
main
Create_Graph ()
LDFS ()
MDFS ()
LBFS ()
MBFS 〔〕
- -
5 详细设计
/**********************************图的根本操作**********************************/
//------------------------------- 邻接矩阵数据类型的定义--------------------------------
// 最大顶点个数
typedef struct
{
char vexs[MAX_VERTEX_NUM]; // 顶点向量
int acrs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vexnum,arum; // 图当前顶点数和弧数
}MGraph ;
//--------------------------------邻接表数据类型的定义----------------------------------
typedef struct Arode
{
int adjvex; // 该弧所指向的顶点的位置
struct Arode *nextarc; // 指向下一条弧的指针
}Arode;
typedef struct VNode
{
char data; // 顶点信息
Arode *0rstarc; // 指向第一条依附该顶点的弧的指针
}VNode, AdjList[MAX_VERTEX_NUM];
typedef struct
{
AdjList vertices;
int vexnum,arum; // 图当前顶点数和弧数
}LGraph;
int Create_Graph( MGraph *Mg , LGraph *Lg ) // 建立图的邻接矩阵,邻接表
{
输入图的顶点个数〔字符〕,构造顶点向量
输入图的任意两个顶点的弧
构造邻接矩阵
构造邻接表
}
void LDFS(LGraph *Lg,int i) 邻接表表示的图的递归深度优先遍历
{
显示顶点向量,
指针指向下一个顶点向量
下一个顶点没有被访问,继续
否那么 退会上一个顶点向量的另一个边
}
void MDFS(MGraph *Mg,int i)邻接矩阵表示的图的递归深度优先遍历
{
显示顶点向量,
- - word.zl-
剩余10页未读,继续阅读
资源评论
gjmm89
- 粉丝: 14
- 资源: 19万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功