制作完图后是否可以将节点添加到图中?

时间:2019-03-27 22:29:20

标签: c++ graph

是否想知道即使已经创建了图形也可以从图中添加和删除节点吗?

下面的代码是我创建图形的方式:

int V = 6;  // Number of vertices in graph
int E = 18;  // Number of edges in graph 
//graph being created
struct Graph* graph = createGraph(V, E); 
//////////////////////////////////////////////

struct Graph* createGraph(int V, int E) { 
   struct Graph* graph = new Graph; 
   graph->V = V; 
   graph->E = E; 
   graph->edge = new Edge[E]; 
   return graph; 
}

1 个答案:

答案 0 :(得分:1)

这总是可能的。如果您使用手动分配的数组,则会更加痛苦:

  • 要删除一个节点,您需要减小renderTarget.BeginDraw(); renderTarget.Clear(colorBlack); //required? // Draw elements renderTarget.EndDraw(); swapChain.Present(1, PresentFlags.None); 的值,然后将要删除的节点之后的每个节点复制到一个位置,例如使用
    {{3} }
  • 要插入节点,您需要分配一个新数组,复制所有节点,添加新节点(末尾?),并增加graph->Egraph->E数组。

但是,如果您使用delete[]则可以帮自己一个忙。然后,您可以使用std::copy(graph->edge+i, graph->edge+graph->E, graph+i-1);动态添加新节点,并使用graph->edge.pushback()删除节点。您将不再需要图-> E,因为您可以使用vector<Edge>来获得它。