东北大学数据结构实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》实验报告 东北大学软件学院 2 - 课程编号:B080101050 1. 实验目的 实验一: 理解队列的概念以及用法 掌握queue类的使用 熟练运用队列先进先出,模拟打印机的工作过程 实验二: 理解图的概念 理解并掌握图的存储,并利用邻接表来存储图的信息 理解并掌握Dijkstra算法 运用Dijkstra算法解决最短路径的问题 针对每次实验,写出你认为比较重要的实验目的 2. 实验内容与实验步骤 2.1打印机模拟程序的内容与步骤 简短明确地写出实验的内容 模拟打印机打印的过程,以先来先服务的策略来完成打印工作。先从一个文件中读取所有任务的大小与到达时间,并将其存储在workload队列中。使用一个计数器来模拟时间的流逝,当当前时间与workload队列中的一个任务的到达时间相等的时候,该任务被弹出,并被压入到另一个等待执行的队列中。该等待执行的队列以先入先出的准则依次弹出任务并执行。最后计算出任务总数与,总等待时间,平均等待时间。 简短描述抽象数据类型或设计的函数描述,说明为什么要使用这种抽象数据类 型,并说明你的解决设想 = 1 \* GB3 ①一个simulator的抽闲类和它的实现类fifo类。该类的simulate函数用来实现先进先出策略的打印算法。 = 2 \* GB3 ②两个队列,一个workload队列,一个是等待执行队列。Workload队列中存放的是所有的打印任务,通过文件读取并保存。而等待执行队列则是为了实现FIFO功能的队列,即时间小的就先被压入等待执行队列,自然也就先被pop并执行。 解决设想: 利用一个int型变量模拟时间的流逝,然后当等待执行队列为空的时候,就不断循环检查workload队列中是否有任务到达,若有则将其弹出并push进等待执行队列。而当等待执行队列中有任务时则执行它,并且同时判断workload队列中是否有任务到达。若workload和等待执行队列同时为空了,则程序结束。 简短明确地写出你实验所采用的存储结构及其用途,详细说明其中的属性的含 义。 = 1 \* GB3 ①job类封装了一个任务的所有属性。包括任务的大小和该任务的用户:任务的大小即为该打印任务一共需要打印的页数,而该任务来自哪个计算机。 = 2 \* GB3 ②event类封装了一个打印事件的所有属性。任务本身并不包含打印的信息, 而一个打印事件则需要包含一个待执行的任务和该任务到达的时间。打印的时候 就是根据这些信息来执行它。而待执行的任务属性即是一个任务对象,而该任务到达的时间即是该任务在某个时间到达打印机,并等待被执行。 = 3 \* GB3 ③simulator类封装了所有打印机的操作,包括加载任务文件,执行打印任务 等。该类将从文件中加载的任务封装成对象,并存储于workload队列中。然后待 时间到时,将该任务pop并push到等待执行队列中。在该队列中自然就按FIFO 的策略来执行。 2.2欧洲旅行实验的内容与步骤 (1) 简短明确地写出实验的内容 该实验就是在互相连接的城市中寻找给定两个城市之间的费用最小的路径。用 邻接表来存储整个图的信息,并用一个map对象来存储各个城市的信息,包括它上一个城市,从起点到该城市的费用和距离。最后利用Dijkstra算法来对任意给定的两个城市,计算他们之间的费用最小的路径。 (2) 简短描述你在实验中使用的数据结构及算法的基本原理。 在本实验中,使用了邻接表,map集合,list集合。邻接表是用于存储整个图的信息的,即它用于存储每一个点,有多少个点与它相连。即对于每一个点,它的名称作为键,而有一个包含了与它相连的所有点的信息的list对象作为值。这样就完全保存了该图的全部信息。然后有了该图,就可以利用Dijkstra算法来计算任意两点之间的距离。而Dijkstra算法的基本思想就是,循环找出下一个离起点距离最短的点,并标上标记,纳入以找出最短路径的点的集合。而当找到的下一个里起点最近的点就是目的地,则循环结束,最短路径则通过map集合中每一个City对象的from_city属性来找到。 (3)描述你采用STL中的什么容器或者类实现图的存储,在算法应用过程中使用什么 数据结构或算法提高算法的效率。 我们使用STL中的map对象来存储图。即map中的每一个键都为一个城市名,然后它的值为与该城市直接相连的所有城市所形成的list对象。 我们使用了邻接表的数据结构,并使用了优先级队列来实现下一个最短路径的点的快速查找,极大地提高了算法的效率。并且使用了Dijkstra算法,利用优先级队列逐渐寻找下一个里起点最

文档评论(0)

kbook + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档