gpt4 book ai didi

c++ - 是否可以在创建图形后将节点添加到图形中?

转载 作者:行者123 更新时间:2023-11-30 04:49:27 26 4
gpt4 key购买 nike

想知道是否可以在我的图表中添加和删除节点,即使它已经创建?

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

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

最佳答案

总是有可能的。如果您使用手动分配的数组,那就更痛苦了:

  • 要删除节点,您需要减少 graph->E 的值, 然后将要删除的节点之后的每个节点复制到前面的一个位置,例如 with
    std::copy(graph->edge+i, graph->edge+graph->E, graph+i-1);
  • 要插入一个节点,您需要分配一个新数组,复制所有节点,添加新节点(在末尾?),然后递增graph->E。 , 和 delete[]旧数组。

但是,如果您使用 vector<Edge>,您会帮自己一个忙反而。然后你可以动态添加新节点 graph->edge.pushback() 并使用 graph->edge.erase() 删除节点.您不再需要 graph->E,因为您可以通过 graph->edge.size() 获得它。 .

关于c++ - 是否可以在创建图形后将节点添加到图形中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com