数据结构实验二欧洲旅行.doc

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

实 验 报 告 课程名称:数据结构 班级: 实验成绩: 实验名称:欧洲旅行 学号: 批阅教师签字: 实验编号:实验二 姓名 实验日期:2012 年6 月 25 日 指导教师: 组号: 实验时间:14 时00 分-17 时00分 一、实验目的 加深对图的表示法和图的基本操作的理解; 掌握用图对实际问题进行抽象的方法; 掌握利用邻接表求解非负权值、单源最短路径的方法,即Dijkstra算法,同时掌握邻接表的建立以及使用方法; 学会使用STL中的map抽象实际问题,掌握有关map的基本操作 二、实验内容与实验步骤 实验内容: 使用图这种抽象的数据结构存储模拟的欧洲铁路路线图,应用Dijkstra算法求得任意两个城市之间的最少路费,并给出路费最少的路径的长度和所经过的城市名。 抽象数据类型及设计函数描述 抽象数据类型 class City: 维护一个城市的信息,包括城市名name,是否被访问过的标记visted,从某个城市到达该城市所需的总费用total_fee和总路径长度total_distance,求得最短路径后路径中到达该城市的城市名from_city。 class Service: 为铁路系统模拟了两个城市之间的直接路线,包括两个城市之间直接到达的费用fee,两城市之间的直接距离distance,两个城市间作为目的地的城市名destination。 class RailSystem: 用邻接表模拟欧洲铁路系统,该邻接表使用数据结构map实现,map的key-value值对的数据类型分别为string和list*Service,对应出发城市名和该城市与它能够到达的城市之间的Service链表。类RailSystem维护一个用来存储城市的map,该map的key-value值对的数据类型分别为string和City*,对应城市名和指向该城市的指针,以访问该城市的有关信息 设计函数描述 RailSystem(const string filename) 构造函数,调用load_services(string const filename)函数读取数据 load_services(string const filename) 读取传入的文件中的数据并建立上述两个map以模拟欧洲铁路路线图 reset(void) 遍历cities图,初始化所有城市的信息:visted未访问,total_distance最大值,total_fee费用最大值,from_city为空 ~RailSystem(void) 析构函数,用delete将两个map中所有使用new操作符开辟的空间删除 void output_cheapest_route(const string from, const string to, ostream out); 输出两城市间的最少费用的路径,调用calc_route(string from, string to)函数计算最少费用 calc_route(string from, string to) 使用Dijkstra算法计算from和to两个城市间的最少费用的路径 recover_route(const string city) 利用栈保存费用最少的路径经由的城市名,弹栈后按正确顺序输出该路径 采用的存储结构 mapstring, listService* outgoing_services 用来保存由一个城市出发可以直接到达的城市名及这两个城市之间的路径信息。 listService* 以service为指针的list表,保存两城市间的路径。 mapstring, City* cities 用来保存所有城市信息,通过城市名查找该城市有关信息。 priority_queueCity*, vectorCity*, Cheapest candidates 存储候选的遍历城市,City*是优先队列存储的对象类型,vectorCity*是该对象的向量集合,Cheapest是比较规则。 stackstring path 存储从出发城市到目标城市的费用最少的路径经由的城市名,输出时弹栈将城市名按顺序输出。 三、实验环境 操作系统:Windows XP Windows 7 调试软件:Microsoft visual studio 2008 上机地点:综合楼311 机器台号:无 四、实验过程与分析 主要算法 load_services(string const filename)函数 读入from和to城市后,首先判断这两个城市在cities这个map中是否存在,若不存在则添加到map中。判断过程需要遍历整个map,而这里并没有使用iterator,而是利用了map

文档评论(0)

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

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

1亿VIP精品文档

相关文档