给定一个已初始化的有向图`G`的邻接表,其中`G.vertices[i].firstarc`指向顶点`i`的邻接表的第一个弧节点。在执行`if(!G.vertices[i].firstarc) G.vertices[i].firstarc=p;`这条语句时,以下哪种情况为真?

答案解析

核心考点说明: 邻接表、出度和入度、`firstarc`的含义。 解题思路分析: `G.vertices[i].firstarc` 指向的是顶点`i`邻接表的第一条弧,即表示顶点`i`的出边。`if(!G.vertices[i].firstarc)` 判断的是顶点`i`的邻接表是否为空,即顶点`i`是否没有任何出边。如果`G.vertices[i].firstarc` 为空,说明顶点 `i` 没有指向其他顶点的弧。因此,这意味着顶点 `i` 的出度为 0。 选项分析: A. 错误。入度是所有指向该顶点的弧的数量,`firstarc` 只表示顶点 `i` 的出边,无法判断入度。 B. 正确。 `G.vertices[i].firstarc` 为空表示顶点 `i` 没有出边,所以出度为 0。 C. 错误。 孤立顶点要求既没有入边也没有出边,此处只说明没有出边,不能说明是否是孤立顶点。 D. 错误。该语句用于初始化`firstarc`,而不是更新已存在的弧节点的指向。 易错点提醒: 注意`firstarc`是指向**出边**的,表示的是出度,而不是入度。容易混淆出度和入度的概念。
正确答案:B
随机推荐
开始刷题