鄰接列表上工作的鄰接表 - >有向加權圖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創建一個數組(嘗試過,但仍然會寫入並獲取內存錯誤)。沒有編譯器錯誤。
「不工作」 - 請更具描述性。什麼不工作,你做了什麼調試? –
編輯,真的只是混淆了我如何工作我的指針不覆蓋我以前的數據。 –