Изучая структуры данных, я наткнулся на структуру данных графа и чувствую, что она соответствует моей потребности выразить следующее изображение в коде:
По существуЯ намереваюсь создать перемещаемую карту, каждое «Местоположение» является узлом структуры графа, а выданные команды [Север, Восток, Запад, Юг] позволяют игроку перемещаться через каждый узел.Красный узел представляет стартовую позицию игроков.Моя проблема заключается в самом графе, потому что:
Я не знаю, как ввести понятие основных направлений, например, в список смежности, который просто содержит узлы без какой-либо идеи его кардинального размещения, дляНапример, узел [0] может быть подключен к [0] -> [4] -> [8] -> [3], но я не смогу узнать, является ли [4] желаемым результатом при выдачеКоманда север.
Простой способ решения этой проблемы будет через следующий связанный список:
struct Area {
int code;
string title;
Area *north;
Area *east;
Area *south;
Area *west;
};
Area *Lookup;
Однако каждый узел имеет свои смежные узлы, определенные вручную, так как это длякласс структур данных (hashmap / map / vectors непригодны для использования), я хотел бы реализовать его с помощью метода adjacencylist (если это возможно).Возможно ли это, если да, как это будет реализовано?
Будет ли матрица смежности лучшей альтернативой?