user-0 提问: c语言公交查询系统中图遍历起什么作用？

回复:
user: user-0
content: 引用 7 楼 edwardvsnc 的回复:比如，你想看一个区域的交通便利情况，是否需要开设新路之类的，就可能要求一下强连通。 这个过程就要遍历图。 比如，路的宽窄不同，流量也就不同，想看一下区域的流通性，就可能要求一下最大流、最小流之类的。 有时还要找出割点、桥，防止一个地方堵死造成整个交通瘫痪。 这些都需要遍历图的基础上来做。  没做过类似的研究，所以例子可能不太恰当。  嗯，这个在现实生活中的确要考虑，从这就可以看出前辈们要编写的程序有多么的复杂。

user: user-0
content: 引用 10 楼 u012510962 的回复:[quote=引用 6 楼 derekrose 的回复:] [quote=引用 5 楼 u012510962 的回复:] [quote=引用 4 楼 derekrose 的回复:] 遍历图和遍历数组原理一样 你不遍历无法获得全部的信息 结果不准确 是的，要全部遍历了才可以得到最终的结果。我先前准备写转车的时候考虑了，就是也许有不同的路线连接这两个站点，那就有不同的转车方法了。 至于遍历的原理，广度优先遍历和深度优先遍历还是有了解的。可现在不知道这两个站点间的路线要怎么存储，求教！！[/quote]  很简单，本质就是链表  每个节点记录本站的信息，以及下个站的节点指针[/quote]  我大概想通了，下面是我的一点点思路。麻烦前辈看下： 比如说现在建立了一个城市公交站点图并以邻接矩阵的方式存储，当要存储其中两个站点间的路径时，那么从起始站点开始对这个图实行遍历。 从起点开始就要开始建立链表，其中要建立多少链表就得看和起点相关联的站点有几个，当遍历完了第一层（在广度优先遍历的前提下），开始遍历第二层，当遍历完成后，此时存在的链表数就是第二层的站点数和第一层的具体情况了。（当这样的分支越来越大那么要建立的链表数要很大，而且很繁琐）就这要下去一直建立很多很多链表，最后在这些链表中查找同时有这两个站点的链表[/quote] 上面的方法简单粗暴，或许要浪费不小内存空间。但在操作时有些模块可以用递归的方法解决，可是感觉这好像太繁琐，请前辈点评一下，指导一下思路。 谢谢！！

user: user-0
content: 引用 6 楼 derekrose 的回复:[quote=引用 5 楼 u012510962 的回复:] [quote=引用 4 楼 derekrose 的回复:] 遍历图和遍历数组原理一样 你不遍历无法获得全部的信息 结果不准确 是的，要全部遍历了才可以得到最终的结果。我先前准备写转车的时候考虑了，就是也许有不同的路线连接这两个站点，那就有不同的转车方法了。 至于遍历的原理，广度优先遍历和深度优先遍历还是有了解的。可现在不知道这两个站点间的路线要怎么存储，求教！！[/quote]  很简单，本质就是链表  每个节点记录本站的信息，以及下个站的节点指针[/quote]  我大概想通了，下面是我的一点点思路。麻烦前辈看下： 比如说现在建立了一个城市公交站点图并以邻接矩阵的方式存储，当要存储其中两个站点间的路径时，那么从起始站点开始对这个图实行遍历。 从起点开始就要开始建立链表，其中要建立多少链表就得看和起点相关联的站点有几个，当遍历完了第一层（在广度优先遍历的前提下），开始遍历第二层，当遍历完成后，此时存在的链表数就是第二层的站点数和第一层的具体情况了。（当这样的分支越来越大那么要建立的链表数要很大，而且很繁琐）就这要下去一直建立很多很多链表，最后在这些链表中查找同时有这两个站点的链表

user: user-1
content: 引用 8 楼 edwardvsnc 的回复:[quote=引用 6 楼 derekrose 的回复:] [quote=引用 5 楼 u012510962 的回复:] [quote=引用 4 楼 derekrose 的回复:] 遍历图和遍历数组原理一样 你不遍历无法获得全部的信息 结果不准确 是的，要全部遍历了才可以得到最终的结果。我先前准备写转车的时候考虑了，就是也许有不同的路线连接这两个站点，那就有不同的转车方法了。 至于遍历的原理，广度优先遍历和深度优先遍历还是有了解的。可现在不知道这两个站点间的路线要怎么存储，求教！！[/quote]  很简单，本质就是链表  每个节点记录本站的信息，以及下个站的节点指针[/quote]  确实可以通过邻接链表来表示图，不过说本质是链表，不敢苟同。 [/quote] “本质”可以换成“思想”

user: user-2
content: 引用 6 楼 derekrose 的回复:[quote=引用 5 楼 u012510962 的回复:] [quote=引用 4 楼 derekrose 的回复:] 遍历图和遍历数组原理一样 你不遍历无法获得全部的信息 结果不准确 是的，要全部遍历了才可以得到最终的结果。我先前准备写转车的时候考虑了，就是也许有不同的路线连接这两个站点，那就有不同的转车方法了。 至于遍历的原理，广度优先遍历和深度优先遍历还是有了解的。可现在不知道这两个站点间的路线要怎么存储，求教！！[/quote]  很简单，本质就是链表  每个节点记录本站的信息，以及下个站的节点指针[/quote]  确实可以通过邻接链表来表示图，不过说本质是链表，不敢苟同。

user: user-2
content: 比如，你想看一个区域的交通便利情况，是否需要开设新路之类的，就可能要求一下强连通。 这个过程就要遍历图。 比如，路的宽窄不同，流量也就不同，想看一下区域的流通性，就可能要求一下最大流、最小流之类的。 有时还要找出割点、桥，防止一个地方堵死造成整个交通瘫痪。 这些都需要遍历图的基础上来做。  没做过类似的研究，所以例子可能不太恰当。

user: user-1
content: 引用 5 楼 u012510962 的回复:[quote=引用 4 楼 derekrose 的回复:] 遍历图和遍历数组原理一样 你不遍历无法获得全部的信息 结果不准确 是的，要全部遍历了才可以得到最终的结果。我先前准备写转车的时候考虑了，就是也许有不同的路线连接这两个站点，那就有不同的转车方法了。 至于遍历的原理，广度优先遍历和深度优先遍历还是有了解的。可现在不知道这两个站点间的路线要怎么存储，求教！！[/quote]  很简单，本质就是链表  每个节点记录本站的信息，以及下个站的节点指针

user: user-0
content: 引用 4 楼 derekrose 的回复:遍历图和遍历数组原理一样 你不遍历无法获得全部的信息 结果不准确 是的，要全部遍历了才可以得到最终的结果。我先前准备写转车的时候考虑了，就是也许有不同的路线连接这两个站点，那就有不同的转车方法了。 至于遍历的原理，广度优先遍历和深度优先遍历还是有了解的。可现在不知道这两个站点间的路线要怎么存储，求教！！

user: user-1
content: 遍历图和遍历数组原理一样 你不遍历无法获得全部的信息 结果不准确

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:试给出A点到B点所有不超过10站路，换乘不超过两次的坐车方案。 前辈们写的就是要深奥好多，想想就好复杂的样子。 我上面那个简单要求的编完了，其中的两个站点查找就仅仅在已有的公交线路中查找，最短路径也就是利用迪杰斯特拉算法原理写的，可我觉得这系统根本没有一点点用。虽然老师没要求我们要有转车功能，可是我想试着去编编，可又有知识盲点。哎！找好求助高手了。 我觉得转车功能的瓶颈是：比如有站点A、B，从A开始遍历找B，在查找过程中怎么记录A到B的路径？难道和迪杰斯特拉算法中的一样拿个数组记录，这显然不可行，因为它们之间可能有多种不同的路径。（这仅仅是个人想法）真的不知道可以用什么方法处理。求指教！！ 谢谢！！

user: user-3
content: 试给出A点到B点所有不超过10站路，换乘不超过两次的坐车方案。

user: user-3
content: 试给出A点到B点所有不超过10站路，倒车不超过两次的坐车方案。 试给出从A点出发，直线距离不超过5公里能到达的所有超市。