【发布时间】:2012-06-08 00:01:21
【问题描述】:
处理邻接表 --> 有向加权图
一个类看起来像这样,即标题:
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 创建一个数组(尝试过并且仍然会重写并且也会出现内存错误)。没有编译器错误。
【问题讨论】:
-
“不工作” - 请更具描述性。什么不工作,你做了什么调试?
-
已编辑,真的只是对我如何处理指针以不覆盖以前的数据感到困惑。
标签: c++ list struct directed-graph