图,数据结构实验.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图,数据结构实验

实验内容: 实验时间:2012 年 06 月 15 日 1.编写函数,采用邻接矩阵表示法,构造一个无向网。 2.编写函数,实现从键盘输入数据,建立一个有向图的邻接表。 3.编写函数,输出该邻接表。 4.编写函数,采用邻接表存储实现无向图的深度优先非递归遍历。 5.编写函数,采用邻接表存储实现无向图的广度优先遍历。 6.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。 实验目的及要求: 1.掌握图的存储思想及其存储实现 2.掌握图的深度、广度优先遍历算法思想及其程序实现 3.掌握图的常见应用算法的思想及其程序实现 实验内容、方法与步骤:(使用附页填写并附在本页后) 实验结果: 小结: 通过这次实验,我掌握了图的存储思想及其存储实现,认识到图的深度、广度优先遍历算法思想及其程序实现,深刻了解了图的常见应用算法的思想及其实现程序。 #include stdio.h #includestdlib.h #includestring.h #define MaxVertexNum 10 /* 顶点最大个数 */ #define MAXSIZE 100 #define INFINITY 10000 /* 用10000代替∞ */ typedef struct ArcCell { int adj; }ArcCell,AdjMatrix[MaxVertexNum][MaxVertexNum]; typedef struct {int vexs[MaxVertexNum]; AdjMatrix arcs; int vexnum,arcnum; }Mgragh; /*构造无向网 */ Mgragh *CreateUDN(Mgragh *N) { int i,j,k,w; int v1,v2; printf(\t输入顶点个数和边数:); scanf(\t%d %d,N-vexnum,N-arcnum); printf(\t输入%d个顶点的元素:,N-vexnum); for(i=0;iN-vexnum;i++){ scanf(\t%d,N-vexs[i]); } for(i=0;iN-vexnum;i++) for(j=0;jN-vexnum;j++) N-arcs[i][j].adj=INFINITY; for(k=0;kN-arcnum;k++){ printf(\t输入第%d条边所依附的顶点:,k+1); scanf(\t%d%d,v1,v2); printf(\t输入权值:); scanf(\t%d,w); for(i=0;iN-vexnum;i++) if(v1==N-vexs[i]) break; for(j=0;jN-vexnum;j++) if(v2==N-vexs[j]) break; N-arcs[i][j].adj=w; N-arcs[j][i]=N-arcs[i][j]; } printf(\t ); for(i=0;iN-vexnum;i++) printf( \t v%d,N-vexs[i]); printf(\t\n); for(i=0;iN-vexnum;i++){ printf(\t v%d,N-vexs[i]); for(j=0;jN-vexnum;j++) printf(\t %3d ,N-arcs[i][j].adj); printf(\n); } return N; } /* 邻接表的类型定义 */ typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; int weight; //边的权 }ArcNode; //表结点 typedef struct VNode { int degree,indegree;//顶点的度,入度 int data; ArcNode *firstarc; }VNode,AdjList[MaxVertexNum]; typedef struct { AdjList vertices; int vexnum,arcnum;//顶点的实际数,边的实际数 }ALGraph; #define TRUE 0 #define FALSE -1 /* 确定位置 */ int LocateVex(ALGraph *G,int v) { int i; for(i=0;v!=G-vertices[i].dataiG-vexnum;i++); if(iG-vexnum) return -

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档