所以我正在为我的考试而学习,并发现以下问题,我无法理解如何解决它:
图表:
typedef struct NODE{
int weight;
int idEdge;
int idDestination;
struct NODO *next;
}Node;
遵循这个原型:
int totVertexWithoutEdges(Node **g, int totv)
我必须创建一个函数,它给出了没有边的顶点总数,但我没有想法怎么做,任何人都可以解释我应该如何解决它,而不是只需要一些步骤就可以找到答案
答案 0 :(得分:0)
执行此操作的一种方法是创建一个每个节点有一个条目的数组。最初,将此数组中的所有元素设置为0。
然后,迭代所有边缘。对于每个边,将表示与源节点(和/或目标节点对应的数组元素)的数组元素更改为1.这标记节点具有连接到它的边。
最后,遍历数组并计算0个条目的数量,这将告诉您没有传入/传出边缘的节点总数。
希望这有帮助!
答案 1 :(得分:0)
您的totVertexWithoutEdges只需浏览您的节点** g,它将是指向链接列表的指针的地址。
可能类似(基于最后一个元素指向NULL的事实)
while (*g != NULL)
{
// Check out what you want about your edge things
g = &(*g)->next;
}
但如果totv表示顶点数,则为
int counter;
counter = 0;
while (counter < totv)
{
// Check out what you want about your edge things
g = &(*g)->next;
counter = counter + 1;
}
链表是一个众所周知的数据结构;),祝你好运。