2017-03-02 125 views
0

這是我正在進行的任務的開始部分。我對結構還不熟悉,所以我只想知道我是否已經正確創建了開頭部分。以粗體顯示的相應部分是我不確定是否正確遵循了指南。正確的結構創建

的開始描述:

開始通過限定兩個結構類型。所有結構類型必須是 ,通過說明(1)該結構代表什麼值和 (2)每個字段代表什麼來記錄。

類型的結構邊表示圖中的一條邊。它有三個 字段:兩個頂點號碼和一個權重。包含無參數 構造函數,將所有三個字段設置爲0.

類型的結構圖表示加權圖。它有四個 字段:

圖中頂點的數目,在圖中的邊緣的數目, 邊緣的陣列保持邊緣,即 陣列邊緣的物理尺寸。包含一個構造函數Graph(nv),該構造函數產生一個帶有nv頂點和無邊的圖形 。構造函數必須創建邊的數組 。你可以假設邊數不超過100個,但是 這個數字必須很容易改變。要將其提高到200,對於 示例,應該只需要更改一行程序。到 實現那個,創建一個命名常量,即最大邊數 。例如,

const int maxEdges = 100;

定義了任何時候你需要參考邊緣,使用maxEdges的最大數量,而不是100的100的值不變maxEdges

我對上述說明的發展規劃:

struct Edge 
{ 
    int vertex1; 
    int vertex2; 
    int weight; 

    Edge() 
    { 
    vertex1 = 0; 
    vertex2 = 0; 
    weight = 0; 
    } 
}; 

struct Graph 
{ 
    int numOfVert; 
    int numOfEdge; 
    int arrayOfEdge[]; 
    const int maxEdges = 100; 

    Graph(int nv) 
    { 
    numOfVert = nv; 
    numOfEdge = 0; 
    arrayOfEdge[maxEdges]; 
    } 
}; 

我只是想知道我是否完全理解描述告訴我要做什麼。感謝任何幫助。

+0

Apperently你沒有看到這一點:「所有的結構類型必須說(1)這是什麼結構的值代表和(2)每個字段的記錄在案代表。」 –

回答

0

你有什麼Edge是正確的。通過在構造函數中使用初始化列表來初始化成員,可以稍微改進代碼。

Edge() : vertex1(0), vertex2(0), weight(0) 
{ 
} 

Graph需要一點點工作。

  1. 使maxEdges成爲非成員常數。
  2. 使arrayOfEdge爲已知大小的數組。

這裏是我的建議:

const int maxEdges = 100; 
struct Graph 
{ 
    int numOfVert; 
    int numOfEdge; 
    int arrayOfEdge[maxEdges]; 

    Graph(int nv) : numOfVert(nv), numOfEdge(0), arrayOfEdge() 
    { 
    } 
}; 
+0

感謝您的建議。我有一個問題,如果我遵循你的建議,在構造函數之前將'arrayOfEdge'設爲一個已知大小的數組,那麼這是否意味着我無效指示指示**構造函數必須創建邊**數組? –

+0

我不認爲你會違反該指導方針。 –