并不是说我有时间适当地讨论这个以得出结论并调整我的代码,因为学校项目的第一阶段(第三阶段)是在 24 小时内,但至少我需要知道我是否做出了正确的决定。
我正在使用链表,这是我的结构:
typedef struct sCity {
int cityID;
char *cityName;
struct sCityLink *links;
struct sCity *next;
} nCity, *City;
typedef struct sCityLink {
City cityLinkParent;
City cityLinkTo;
struct sCityLink *next;
} nCityLink, *CityLink;
基本上,我有很多城市,这些城市都连接在一起,就像一个图表。例如,A、B、C、D 和 E 它们按此顺序插入到结构City中。然后,我将 A 连接到 B,C 和 D,B 连接到 C,D,E,C 连接到 D,E 和 D 连接到 E。
现在,假设我需要去E市。这是链表中的最后一个,并且需要时间遍历链表。也许不是在这个有 5 个城市的例子中,但在真正的应用程序中,我应该至少支持 10,000 个城市。但是最短的路线是从A(这是起点)从C到E(或者可以是ADE或ABE,没关系)。
我的结构是否允许我找到从 A 到 E 的最短路径,而无需一一遍历整个链表?如果没有,我做错了什么?
如果是,我该怎么做?我不知道我怎么能找到这样的路径......