邻接列表上工作的邻接表 - >有向加权图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.
}
}
我试过几种不同的方式和我一直困惑自己,在正确的方向上的任何一点将是真棒。
编辑: 如果需要制作,我还有更多的代码,只是发布主要内容。 我的意思是“不工作”是因为我只是在写上一个顶点。我不知道是否应该使用m_myMap创建一个数组(尝试过,但仍然会写入并获取内存错误)。没有编译器错误。
“不工作” - 请更具描述性。什么不工作,你做了什么调试? –
编辑,真的只是混淆了我如何工作我的指针不覆盖我以前的数据。 –