- 30
- 0
- 约6.2千字
- 约 9页
- 2017-08-29 发布于河南
- 举报
东北大学欧洲旅游数据结构业务
数 据 结 构实 验 报 告
课程:: 实验名称:: 姓名:贾志远 实验日期 组: :
实验目的
掌握用图对实际问题进行抽象的方法,可以解决基本的问题;
掌握利用邻接表求解非负权值、单源最短路径的方法,即利用迪杰斯特拉算法求最短路径,同时掌握邻接表的建立以及使用方法,能够解决相关的问题;
学会使用STL中的map抽象实际问题,掌握map,List,,priority_queue等二、实验内容
简短描述抽象数据类型或设计的函数描述,说明为什么要使用这种抽象数据类型,并说明你的解决设想
抽象数据类型
class City:
维护一个城市的信息,包括城市名name,是否被访问过的标记visited,从某个城市到达该城市所需的总费用total_fee和总路径长度total_distance,求得最短路径后路径中到达该城市的城市名from_city。
class RailSystem:
用邻接表模拟欧洲铁路系统,该邻接表使用数据结构map实现,map的cities--outgoing_services值对的数据类型分别为string和list*Service,对应出发城市名和该城市和它能够到达的城市之间的Service链表。
class Service:
为铁路系统模拟了两个城市之间的直接路线,包括两个城市之间直接到达的费用fee,两城市之间的直接距离distance,还有经过的城市destination。
部分设计函数描述
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)
使用迪杰斯特拉算法计算from和to两个城市间的最少费用的路径
简短明确地写出你实验所采用的存储结构及其用途,详细说明其中的属性的含义。
mapstring, listService* outgoing_services
用来保存由一个城市出发可以直接到达的城市名及这两个城市之间的路径信息。
listService* ms
以service为指针的list表,保存两城市间的路径。
mapstring, City* cities
用来保存所有城市信息,通过城市名查找该城市有关信息。
priority_queueCity*, vectorCity*, Cheapest candidates
存储候选的遍历城市,City*是优先队列存储的对象类型,vectorCity*是该对象的向量集合,Cheapest是比较规则。
三、实验环境时间是
calc_route(string from, string to)函数
利用优先权队列和迪杰斯特拉算法,计算任意两城市之间费用最少的路径,优先权队列按照费用由大到小的顺序入队。
首先初始化所有城市的信息。通过迭代器遍历它的邻接链表,得到邻接城市名,当这个城市未被被访问过且从弹出的城市到该城市的费用大于这两个邻接城市间费用和出发城市目前的最少费用之和,更新从出发城市到该城市的费用,并且记录这个城市的经由城市为弹出的城市名并将这个城市入栈,同时更新目前的路径长度。
代码如下:
priority_queueCity*, vectorCity*, Cheapest candidates;
City* city=cities[from];
city-total_fee=0;
city-total_distance=0;
candidates.push(city);
while(!candidates.empty())
{
while((city = candidates.top())-visited)
{
candidates.pop();
}
city-visited=true;
candi
您可能关注的文档
- DELL笔记本键盘键帽拆卸.doc
- C_语言编程实验答案.doc
- Delta Delta伺服调试体验故障排除.doc
- DeviceNet转换器应用程序.docx
- C#编程问题.doc
- drawing software DA全.doc
- Duman闪存卡的100个Koka系列数据共享.doc
- EA211发动机同步带噪音.doc
- EM 235手册.doc
- Eviews绘图操作.docx
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)