2017-03-02 99 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

我不认为你会违反该指导方针。 –