用邻接表遍图实验报告.doc

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

《数据结构(C++版)》 实验报告 班 级 1405 学 号 211415034 姓 名 徐妍 题 目 用邻接表遍历图 指导教师 王江涛 计算机科学与技术学院 2015 年 12 月 12 日 实验题目:用邻接表遍历图 实验目的: 掌握图的逻辑结构 掌握图的邻接表存储结构 验证图的邻接表存储及其深度和广度优先遍历操作的实现 实验内容: 建立一个有向图的邻接表存储结构 对建立的有向图,进行深度优先遍历 对建立的有向图,进行广度优先遍历 设计与编码 本实验用到的理论知识 边表结点与顶点表结点的建立(类似单链表中的结点); 队列的特点:只能在一端插入,另一端删除; 算法设计 关键算法与分析 边表结点与顶点表结点的建立 建立一个有n个顶点e条边的有向图 有向图的深度优先遍历 有向图的广度优先遍历 求某个顶点的度 运行与测试 正确的运行结果 总结与心得 运用邻接表来实现有向图的深度和广度优先遍历,在建立邻接表的时候,我发现运用结点能够更好地表示点与点之间的关系,在邻接表中,我们运用了顶点表结点和边表结点。无论是以前学习的单链表,双链表,树,二叉树,里面的点都是运用结点来实现数据之间的关系 附录(程序完整代码) ALGraph.h #ifndef ALGraph_H //定义头文件 #define ALGraph_H const int MaxSize=10; //图的最大顶点数 struct ArcNode //定义边表结点 { int adjvex; //存放该顶点的邻接结点在顶点表中的下标 ArcNode *next;//该顶点的其他邻接结点(边表结构)-指向边表中的下一个结点 }; template class DataType struct VertexNode //定义顶点表结点 { DataType vertex;//存放顶点信息 ArcNode *firstedge;//存放顶点的第一个邻接结点(边表结构) }; template class DataType class ALGraph { public: ALGraph(DataType a[ ], int n, int e); //构造函数,建立一个有n个顶点e条边的图 ~ALGraph( ); //析构函数,释放邻接表中各边表结点的存储空间 void DFSTraverse(int v); //深度优先遍历图 void BFSTraverse(int v); //广度优先遍历图 int Du(int x);//求第x个顶点的度 private: VertexNodeDataType adjlist[MaxSize]; //存放顶点表的数组 int vertexNum, arcNum; //图的顶点数和边数 }; #endif ALGraph.cpp #include iostream using namespace std; #include ALGraph.h //引入头文件 template class DataType ALGraphDataType::ALGraph(DataType a[ ], int n, int e) { ArcNode *s; int i, j, k; vertexNum = n; arcNum = e; for (i = 0; i vertexNum; i++) //输入顶点信息,初始化顶点表 { adjlist[i].vertex = a[i]; adjlist[i].firstedge = NULL; } for (k = 0; k arcNum; k++) //依次输入每一条边 { cout请输入边的两个顶点的序号:; cin i j; //输入边所依附的两个顶点的编号 s = new ArcNode; s-adjvex = j; //生成一个边表结点s s-next = adjlist[i].firstedge; //将结点s插入到第i个边表的表头 adjlist[i].firstedge = s; } } template class DataType ALGraphDataType::~ALGraph( ) { ArcNode *p;

文档评论(0)

135****6041 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档