- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈尔滨工业大学计算机科学与技术学院
实验报告
课程名称:数据结构与算法
课程类型:必修
实验项目名称:图形结构及其应用
实验题目:图型结构的建立与遍历
设计成绩 报告成绩 指导老师
目录:
目录: 2
一、实验目的 3
二、实验要求及实验环境 3
1.实验内容: 3
2.实验要求: 3
3.实验环境 3
三、设计思想 4
1.逻辑设计 4
(1)邻接矩阵 4
(2)邻接表 4
(3)队列 5
(4)队列堆栈 5
2.物理设计 6
(1)数据读入 6
(2)广度优先搜索 9
(3)深度优先搜索——递归实现 12
(4)深度优先搜索——非递归实现 14
四、测试结果 17
初始化与图的读入 17
展示邻接表读入结果 17
展示邻接矩阵读入结果 18
初始提示 18
提示输入指令: 18
非法输入 19
广度优先搜索 19
深度优先搜索:二层选择 19
-递归深度优先搜索 20
-非递归深度优先搜索 20
展示:二层选择 20
-展示邻接表读入结果(同前) 20
-展示邻接矩阵读入结果(同前) 20
退出及退出确认 21
五、系统不足与经验体会 21
六、附录: 21
源代码:main.cpp 21
输入 21
输出 21
一、实验目的
通过实现图形结构,掌握逻辑结构、储存结构及其应用。
二、实验要求及实验环境
1.实验内容:
树型结构的建立与遍历:
图的遍历(搜索)算法是图型结构算法的基础,本实验要求编写程序演示图的存储结构的建立和遍历(搜索)过程。
2.实验要求:
(1)能够建立(有向和无向)图的邻接矩阵和邻接表存储结构
(2)能够在邻接矩阵和邻接表存储结构上对(有向和无向)图进行深度优先(递归和非递归都要求)和广度优先搜索
(3)能够存储和显示相应的搜索结果(深度优先或广度优先生成森林(或生成树)、深度优先或广度优先序列和编号)
(4)以文件形式输入图的顶点和边,并显示相应的结果。要求顶点不少于10个,边不少于13个
(5)软件功能结构安排合理,界面友好,便于使用
3.实验环境
Microsoft Windows7, Code::Blocks 10.05
三、设计思想
1.逻辑设计
(1)邻接矩阵
一个|V|×|V|的二维数组AM,满足:
AM[i][j]= 1,i,j是有向图的边
0,i,j不是有向图的边
(2)邻接表
数据成员:
基本操作:
插入边:对图中的新有向边i,j,令i,节点对应链表插入一个j
广度优先搜索
深度优先搜索(递归)
深度优先搜索(非递归)
(3)队列
数据成员:
头结点:指向队首,以方便操作。
基本操作:
入队:将一个元素插入队首
出队:从队尾取出一个元素
(4)队列堆栈
数据成员:
头结点:每个头结点指向一个队列,只有堆栈顶层的头节点对应的队列才能进行出队、入队操作。
基本操作:
入栈:头结点压入堆栈
出栈:弹出头节点,对头节点对应队列进行操作
2.物理设计
(1)数据读入
有向图以边序列的形式从文件输入,共有17个顶点,30条边:
I.邻接表
单元:邻接表的基本单位。每个单位包含结点序号和下一单元的指针。
邻接表:包含一个单元数组和布尔数组。
单元数组中,每个单元代表单元序号对应的结点;每个单元都是一个链表的表头;这一链表储存的是头结点可到达的结点。
布尔数组中,每个元素代表其序号对应的结点,用于记录每个结点是否已被读取。
操作——增加边:对新的有向边a,b,将b插入邻接表中a作为头结点的链表。
II.邻接矩阵
由于只是一个二维数组,因此其内容可在程序内直接调用、修改。需要进行初始化。
III.读入函数
为了方便,本程序同时将图读入邻接矩阵和邻接表。
(2)广度优先搜索
I.邻接表上的广度优先搜索
由于广度优先搜索要多次发起搜索,所以采用主从函数形式:
Master:对布尔数组和搜索顺序数组进行初始化,并调用Servant进行广度优先搜索。
对每个未被从函数访问的结点,调用从函数,以其为根结点进行广度优先搜索。
把广度优先搜索结果输出到文件。
Servant:以输入结点为根结点,进行广度优先搜索。
将输入结点标记为已读,同时建立队列。
建立队列,以根据根结点为最初元素,每次出队一个元素,把这一结点可达而又未读过的结点添加到队列中,如此循环,直到队列清空。
II.邻接矩阵上的广度优先搜索
沿用主从函数形式。原理类似。
区别主要在于,每次读取根结点的可达点,依据的是邻接矩阵。
(3)深度优先搜索——递归实现
I.邻接表实现
Master:
初始化相关记录数组,并启动从函数。
Ser
您可能关注的文档
最近下载
- 烟草考试真题及答案.doc VIP
- 2025年最新人教版八年级(初二)数学上册教学计划及进度表(新课标,新教材).docx
- 外研版高中《英语》(新标准)选择性必修一Unit1 单元整体教学设计附作业设计.docx VIP
- 5.1《论语》十二章 课件(共48张PPT)统编版高中语文选择性必修上册.pptx VIP
- 计算机网络实验报告(8)网络地址转换NAT配置、网络端口地址转换NAPT配置.pdf VIP
- 工程材料及成形技术基础-全套PPT课件.pptx
- 单证员考试试题.pdf VIP
- 地面空压机安装技术措施.docx VIP
- 工程建设法规的案例.ppt VIP
- 农产品食品检验员职业技能竞赛理论考试题库(含答案).docx VIP
文档评论(0)