Невозможно представить граф, используя список смежности в C ++ - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь представить граф, используя представление списка смежности графов в C ++.Поэтому я попытался преобразовать этот C (языковой) код, который я нашел в этом видео на YouTube https://www.youtube.com/watch?v=mQEv1QxaIuM&t=7s. Но когда я попытался написать этот код на C ++, я получаю сообщение об ошибке.Компилятор VSStudio показывает "выражение должно иметь тип указателя".(Обратите внимание, что это видео на хинди.)

Вот мой код на C ++ (он еще не завершен из-за ошибки.)

// Adjacency List Representation of Graph

#include <iostream>

struct listNode // defining linked list
{
    int vertexNumber;
    listNode *next;
};

struct graph // defining graph
{
    int vertex;
    int edge;
    listNode *adj;

};

graph *adjacencyListOfGraph()
{
    int x, y;
    listNode *temp;
    graph *G = new graph;

    std::cout << "Enter the number of vertex and edges.\n";
    std::cin >> G->vertex >> G->edge;

    G->adj = new listNode[G->vertex];

    for (int i = 0; i < G->vertex; ++i)
    {
        G->adj[i]->vertexNumber = i;// this is where I'm getting an error
    }
}

1 Ответ

0 голосов
/ 18 сентября 2018

См. Ответ на этот вопрос .adj[i] эквивалентно *(adj+i).Вы берете смещение от G->adj и затем разыменовываете, поэтому G->adj[i].vertexNumber - правильный синтаксис.

(Обратите внимание, что правильное написание - смежность ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...