图G用相邻矩阵表示,通过具有以下原型的类。问题是添加一个从图中删除节点的公共类方法(void delete(int))。请有人帮我提供代码。几天来,我一直在努力解决这个问题。
int V;
structAdjList*array;
Graph(int)
AdjListNode*newAdjListNode(int)
voidsetEdge(int,int)
boolisEdge(int,int)
答案 0 :(得分:0)
如果它是一个邻接矩阵,那么要删除第i个节点,你需要删除该矩阵中的第i行和列,这很简单。
如何做到这一点取决于矩阵的表示。无法从您的代码片段中读取它。如果你有一个vector<vector<bool> > adjacent;
你只需要使用vector :: erase(请注意,这将导致大量的重新分配,并且对于一个大矩阵来说是不切实际的。从长远来看,无论如何你都需要一个稀疏矩阵,可能会选择简单地使行和列无效,同时保留有效节点ID的列表。)
您的structAdjList*array
听起来有点像矩阵表示,但目前尚不清楚。我假设您的讲座中有关于在课程中如何表示矩阵的材料。找到并发布,我们可以帮助您。
在任何情况下,请确保您不要过多依赖互联网,因为您在考试期间不会得到我们的帮助。考虑向你的教授询问这些事情,或许作为一群同样存在同一问题的学生的代言人(我认为这样你可以简单地问另一个学生)。