Какие утверждения верны для процедуры заполнения списка смежности?
initialize_graph(graph *g, bool directed) // Инициализация списка смежности
{
int i;
g-> nvertices = 0;
g-> nedges = 0;
g-> directed = directed;
for (i=1; i<=MAXV; i++)
g->degree[i] = 0;
for (i=1; i<=MAXV; i++)
g->edges[i] = NULL;
}
read_graph(graph *g, bool directed) // Заполнение списка смежности
{
int i; // индекс цикла считывания ребер
int m; // временная переменная для числа ребер
int x, y; // временные переменные для вершин очередного ребра
initialize graph(g, directed);
scanf(”%d %d”,&(g->nvertices),&m);
for (i=1; i<=m; i++) {
scanf(”%d, %d”,&x,&y);
insert_edge(g,x,y,directed);
}
}
insert_edge(graph *g, int x, int y, bool directed) // Вставка ребра в список
{
edgenode *p;
p = malloc(sizeof(edgenode));
p->weight = NULL;
p->y = y;
p->next = g- >edges[x];
g->edges[x] = p;
g->degree[x] ++;
if (directed == FALSE)
insert_edge(g,y,x,TRUE);
else
g->nedges ++;
}

  • Для не орграфа каждое ребро должно вводиться два раза (в прямом и обратном направлении)
  • Для не орграфа каждое ребро должно вводиться один раз
  • Количество вершин и ребер графа задается первой парой
  • Количество вершин и ребер графа задается последней парой
  • На вход процедуре подается список ребер
  • Процедура использует рекурсию
  • Процедура не использует рекурсию
  • Процедура правильно работает с любыми простыми графами
  • Процедура правильно работает только с орграфами

К сожалению, у нас пока нет статистики ответов на данный вопрос, но мы работаем над этим.