- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验七 图建立与其应用
实验七 图的建立及其应用
一、实验目的:
(1)掌握图的存储思想及其存储实现。
(2)掌握图的深度、广度优先遍历算法思想及其程序实现。
(3)掌握图的常见应用算法的思想及其程序实现。
(4)理解有向无环图、最短路径等算法
二、实验要求
1.将算法中的横线内容填写完整,使程序能正常运行
2.在主函数中设计一个简单的菜单,具有如下功能。
(1)建立有向图的邻接表;
(2)输出邻接表;
3.实现图的深度优先遍历的算法(选做)
4.完成实际应用(选做)
三、实验原理
1、图(GRAPH)是一种复杂的数据结构,结点之间的关系可以是任意的,由此图的应用极为广泛,已经渗透到如物理、化学、电讯工程、计算机科学等领域。
2、图存储结构:邻接矩阵表示法和邻接表表示法,本次实验图主要以邻接表进行存储。
用邻接矩阵表示法表示图如下图所示:
V3V03 0 1 0 1
V3
V0
3
A = 1 0 1 1
V1V2 0 1 0 0
V1
V2
1 0 0 1
一个无向图的邻接矩阵表示
无向图对应的邻接表表示如下图所示:
序号 vertex firstedge
0V0 1 3 ∧
0
V0
V1
V1
1 0 2 3 ∧
1
∧112V2
∧
1
1
2
V2
V3
V3
3 0 1 ∧
3
一个无向图的的邻接表表示
四、实验程序说明
图类型定义
typedef struct Node
{
int dest; //邻接边的弧头结点序号
struct Node *next;
}Edge; //邻接边单链表的结点的结构体
typedef struct
{
DataType data; //图顶点
Edge *adj; //邻接边的头指针
}AdjLHeight; //数组的数据元素类型结构体
typedef struct
{
AdjLHeight a[MaxVertices]; //邻接表数组
int numOfVerts; //结点个数
int numOfEdges; //边个数
}AdjLGraph; //邻接表结构体
五、参考程序
#includemalloc.h /* malloc()等 */
#includestdio.h /* EOF(=^Z或F6),NULL */
#includestdlib.h /* atoi() */
#includeprocess.h /* exit() */
typedef char DataType;
#define MaxVertices 10
void AdjInitiate(AdjLGraph *G)
//初始化图
{
int i;
G-numOfEdges=0;
G-numOfVerts=0;
for(i=0;iMaxVertices;i++)
{
G-a[i].adj = NULL ;//设置邻接边单链表头指针初值
}
}
void InsertVertex(AdjLGraph *G,int i,DataType vertex)
//在图中的第i个位置插入顶点数据元素vertex
{
if(i=0iMaxVertices)
{
G-a[i].data =vertex; //存储顶点数据元素vertex
G-numOfVerts++ ; //个数加1
}
else printf(结点越界);
}
void InsertEdge(AdjLGraph *G,int v1,int v2)
//在图中加入边v1,v2的信息
{
Edge *p;
if(v10||v1=G-numOfVerts||v20||v2=G-numOfVer
您可能关注的文档
最近下载
- DMIS语言简易教程资料.pdf VIP
- 初中物理八年级下册-大单元教学】10.3教学设计:物体的浮沉条件及应用教学设计 八下第十章《浮力》大单元整体设计(人教版).doc VIP
- 围挡物资供货服务计划方案.docx VIP
- 重症患者心脏康复护理技术.pptx VIP
- 05X101-2 地下通信线缆敷设建筑工程 图集 .docx VIP
- 水利水电站压力管道.doc VIP
- 八年级物理第二章声现象主题单元设计.doc VIP
- 人教版八年级下册物理 第七章 力 大单元整体教学设计.docx VIP
- 12D101-5 110KV及以下电缆敷设.docx VIP
- 初中数学大单元整体教学设计.docx VIP
文档评论(0)