没有边C的总顶点

时间:2013-02-07 22:57:52

标签: c algorithm graph

所以我正在为我的考试而学习,并发现以下问题,我无法理解如何解决它:

图表:

        typedef struct NODE{
             int weight;
             int idEdge;
             int idDestination;
             struct NODO *next;
        }Node;

遵循这个原型:

    int totVertexWithoutEdges(Node **g, int totv)

我必须创建一个函数,它给出了没有边的顶点总数,但我没有想法怎么做,任何人都可以解释我应该如何解决它,而不是只需要一些步骤就可以找到答案

2 个答案:

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

链表是一个众所周知的数据结构;),祝你好运。