Программирование на C: структуры и определения типов для Graph со списком смежности - PullRequest
0 голосов
/ 30 мая 2018
typedef struct GraphRep *Graph;
typedef int Vertex;

typedef struct _adjListNode {
Vertex         w;
int         weight;
struct _adjListNode *next;
} adjListNode;

typedef adjListNode* AdjList;

В заголовочном файле, который у меня есть, есть эти функции, моя задача - создать график списка смежностей, используя его с нуля, пока у меня есть такие:

struct GraphRep{
int nV;                // number of vertices (also == to size of array)
struct AdjList* array; // array where each index is the vertex pointing to a 
                       // list of its adjacent nodes
};

Прежде всего, я 'Я не совсем понимаю, как правильно вызывать список смежности в массиве struct, я не уверен, как правильно работать с определениями и структурами.

Это также домашнее задание, я в основном хочу помочь разобраться, что делает код, как егосвязаны между собой.

1 Ответ

0 голосов
/ 30 мая 2018

Предложение помощи в соответствии с Как мне задавать и отвечать на домашние вопросы?

Подсказка 1)
Убедитесь, что вас устраивает концепция «связанных списков», особенно«связанные списки».Это очень важный инструмент для этого задания.
При необходимости сначала прочитайте учебник по этой теме или прочитайте материал своего класса и переделайте некоторые практические задания по этому вопросу.
Затем найдите два примера связанныхсписки в структурах данных, которые вы показали.

Подсказка 2)
График будет представлен одним списком узлов и для каждого из них списком смежностей.Посмотрите эти термины тоже.
Обратите внимание, что каждый из этих списков имеет неизвестную длину, которая меняет каждый новый граф.Таким образом, массивы с фиксированной длиной не помогают.Для каждого узла вы должны быть в состоянии назвать любое количество смежных других узлов.И вам нужно уметь работать с любым количеством узлов.

Подсказка 3)
Положите 1) и 2) вместе.Как можно 2) решить с помощью инструментов из 1)?

...