Не то, чтобы у меня было время обсудить это должным образом, чтобы прийти к выводу и адаптировать мой код, потому что первый этап (из трех) школьного проекта длится 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 они вставляются в этом порядке в структуру Город . Затем я подключаю A к B, C и D, B к C, D, E, C к D и E и D к E.
Теперь, допустим, мне нужно поехать в город E. Это последний объект в связанном списке, и для его полного прохождения требуется время. Может быть, не в этом примере с 5 городами, но в реальном приложении я должен поддерживать как минимум 10 000 городов. Но самый короткий маршрут - от A (который является отправной точкой) от C до E (или это может быть A-D-E или A-B-E, не имеет значения).
Позволяют ли мои структуры найти кратчайший путь от А до Е, не пересекая весь связанный список один за другим? Если нет, то что я делаю не так?
Если да, как я могу это сделать? Понятия не имею, как мне найти такой путь ...