Работа в списке смежности -> направленный взвешенный графC++ список смежности указателей и структур
Один класс выглядит следующим образом, то есть заголовок:
class CGraph;
class CMap {
public:
//voided constructors and destructors
//functions one is:
void SetDirGraph(string commands);
private:
CGraph* m_myMap;
};
Второй класс:
class CNode {
public:
//voided constructor and desctructor
int m_distance, m_vert;
bool m_isKnown;
};
typedef struct edges {
int v2, weight;
} edge;
class CGraph {
public:
CGraph(int map_size);
~CGraph(void);
void AddMap(int v1, int v2, int weight);
void AddEndVert(int v2, int weight);
private:
list<edge> List;
int size;
public:
CNode* verts;
};
Я читаю вершины из файла, и это работает. Моя проблема заключается в том, что мне трудно создать список смежности на основе приведенного кода. Сначала я пытаюсь использовать указатели, указывающие на список, и он работает неправильно. Я не знаю, как создать мои указатели в списке, не написав над ними.
void CMap::SetDirGraph(string command) {
istringstream buffer(command)
char ch;
int num, vert1, vert2, weight; //specify vertices and weight and number of vertices
buffer>>ch; //throw away first character (not needed)
buffer>>num // size of vertices
while(!buffer.eof()) { // keep reading until end of line
buffer>>v1; // vertex start
buffer>>v2; // vertex end
buffer>>weight;
m_myMap = new CGraph(map_size); //initialize m_myMap.
m_myMap->verts->m_vert = v1; // mymap->verts->vert points to first edge
m_myMap->AddMap(v1, v2, weight); // create list?
m_myMap->AddEndVert(v2, weight); //create list? push v2 and weight on my list using my list.
}
}
Я пробовал несколько разных способов, и я все время путаю себя, любая точка в правильном направлении была бы удивительной.
EDIT: У меня есть еще один код, если необходимо, чтобы создать, просто публикуя основной материал. Что я подразумеваю под «нерабочим», так это то, что я просто пишу поверх предыдущей вершины. Я не знаю, должен ли я создать массив, используя m_myMap (попробовал и все еще записывает и также получает ошибку памяти). Ошибок компилятора нет.
«не работает» - пожалуйста, напишите более подробно. Что не работает и какая отладка вы сделали? –
отредактирован, на самом деле просто смущен тем, как я работаю над своими указателями, чтобы не переопределять мои предыдущие данные. –