网站大量收购独家精品文档,联系QQ:2885784924

数据结构实验六:简单路径.docx

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

HUNAN UNIVERSITY课程实验报告题 目: 简单路径 学生姓名 学生学号 专业班级 指导老师 李 晓 鸿 完 成 日 期 2 0 1 5年 12 月 12日 一、需求分析1.程序的功能 该程序可以通过构建一个图用来表示各个城市之间是否有高速公路连通的关系,可以实现查询两城市间所有路径的功能,如果存在路径则输出。2.输入的形式 本程序要求用户首先输入一个结点总数,然后输入结点的城市编号,最后输入要查询所有简单路径的两座城市的名称。当用户输入不合法时,提示用户输入有误,并重新输入。输入具体格式如下:请输入城市总数:n(大于零的整数)请输入输入城市1名称:请输入输入城市2名称:请输入输入城市3名称:......请输入输入城市n名称:请输入城市间的高速公路:请输入两所城市的名称:输出的形式 ①若有路径从城市A到城市B的所有路径如下://路径1//路径2②若无路径两城市不连通测试数据①.正常的输入:请输入城市总数:4请输入输入城市1名称:0001请输入输入城市2名称:0002请输入输入城市3名称:0003请输入输入城市4名称:0004请输入城市间的高速公路:0001 0002请输入城市间的高速公路:0002 0003请输入城市间的高速公路:0003 0004请输入城市间的高速公路:0001 0004请输入城市间的高速公路:0 0请输入两所城市的名称:0001 0004输出:两城市间的路径为:0001 0002 0003 0004两城市间的路径为:0001 0004②.正常的输入:请输入城市总数:5请输入输入城市1名称:c1请输入输入城市2名称:c2请输入输入城市3名称:c3请输入输入城市4名称:c4请输入输入城市5名称:c5请输入城市间的高速公路:c1 c2请输入城市间的高速公路:c1 c5请输入城市间的高速公路:c5 c4请输入城市间的高速公路:c4 c3请输入城市间的高速公路:0 0请输入两所城市的名称:c2 c4输出:两城市间的路径为:c2 c1 c5 c4③.无路径情况:请输入城市总数:3请输入输入城市1名称:a请输入输入城市2名称:b请输入输入城市3名称:c 请输入城市间的高速公路:a b请输入城市间的高速公路:0 0请输入两所城市的名称:a c输出:两城市不连通④.错误的城市个数请输入城市总数:-1输入错误重新输入(大于零的整数)请输入城市总数 2请输入输入城市1名称:1请输入输入城市2名称:2 请输入城市间的高速公路:1 2请输入城市间的高速公路:0 0请输入两所城市的名称:1 2输出:两城市的路径为 1 2⑤.存在自返路径请输入城市总数:2请输入输入城市1名称:上海请输入输入城市2名称:长沙 请输入城市间的高速公路:上海 上海请输入城市间的高速公路:上海 长沙请输入两所城市的名称:长沙 上海输出:长沙 上海二、概要设计1.抽象数据类型 因为各个结点之间是网状结构,那么一个结点会和多个结点连接,因此我们使用图来存储各个结点的信息。同时我们需要一个数据结构来搜索图,该数据结构满足先进后出,所以使用栈来实现。ADTADT Stack{数据对象:D={ ai | ai ∈binNode, i=1,2,...,n, n≥0数据关系:R1={ ai-1, ai | ai-1, ai∈D, i=2,...,n } 约定an 端为栈顶,a1 端为栈底。 若栈中没有元素,则为空栈。基本操作:bool push(const BinNodeitem);bool pop(BinNodeit);bool topValue(BinNodeit);int length();const;}ADT Graph{ 数据对象:V,R(图是由一个顶点集 V 和一个弧集 R构成的数据结构) 数据关系:Graph = (V,R) VR={v,w|v,w∈V且P(v,w)} 基本操作:int n() =0; // 返回图节点数 int e() =0; //返回图边数 int first(int)=0;//返回该节点的第一条邻边 void setEdge(int v1, int v2)//加边 int next(int, int) =0; //返回下一条邻边 int getMark(int) =0;//有标记吗 void setMark(int, int) =0;//设置标记}算法的基本思想 使用深度优先搜索DFS对图进行遍历,在搜索过程中,每当访问一个顶点V后,DFS就会递归的访问它的所有未被访问的相邻顶点。即先访问点v,把所有与v相关联的边存入栈,弹出栈顶元素,栈顶元素代表的边所关联的另一个顶点就是就是要访问的下一个元素,重复对v的操作;依次类推直到所有元素

文档评论(0)

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

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

1亿VIP精品文档

相关文档