正确的结构创建

时间:2017-03-02 04:04:21

标签: c++ algorithm struct graph

这是我正在进行的作业的开始部分。我还不熟悉结构,所以我只想知道我是否正确地创建了开头部分。粗体的相应部分是我不确定我是否正确遵循指南的陈述。

开头说明:

  

首先定义两种结构类型。所有结构类型必须是   通过说(1)这个结构的价值代表什么来证明   (2)每个领域代表什么。

     

Edge 类型的结构表示图形中的一条边。它有三个   fields:两个顶点数和一个权重。包括无参数   将所有三个字段设置为0的构造函数。

     

图形类型的结构表示加权图。它有四个   字段:

     

图表中的顶点数量,图表中的边数,   一个边缘数组,用于保持边缘,边缘的物理尺寸   边缘阵列。包括一个产生图形的构造函数Graph(nv)   具有nv顶点且没有边缘。构造函数必须创建数组   边缘。你可以假设边缘不超过100条,但是   这个数字必须易于改变。要增加到200,为   例如,应该只需要更改程序的一行。至   实现这一点,创建一个命名常量,即最大数量   边缘。例如,

     

const int maxEdges = 100;

     

定义值为100的常量maxEdges。每当需要引用最大边数时,请使用maxEdges,而不是100。

我对上述描述的发展计划:

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];
  }
};

我只是想知道我是否完全理解描述告诉我要做什么。感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Edge的内容是正确的。您可以通过使用构造函数中的初始化列表初始化成员来稍微改进代码。

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

Graph需要一点点工作。

  1. 使maxEdges成为非成员常数。
  2. 使arrayOfEdge成为已知大小的数组。
  3. 这是我的建议:

    const int maxEdges = 100;
    struct Graph
    {
       int numOfVert;
       int numOfEdge;
       int arrayOfEdge[maxEdges];
    
       Graph(int nv) : numOfVert(nv), numOfEdge(0), arrayOfEdge()
       {
       }
    };