无法使用C ++中的邻接表来表示图

时间:2018-09-18 16:33:27

标签: c++ pointers data-structures graph

我正在尝试使用C ++中图形的邻接表表示形式来表示图形。因此,我尝试转换了在此youtube视频https://www.youtube.com/watch?v=mQEv1QxaIuM&t=7s中发现的C(语言)代码。但是,当我尝试用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 :(得分:0)

请参阅this question的答案。 adj[i]等同于*(adj+i)。您要从G->adj开始偏移,然后取消引用,因此G->adj[i].vertexNumber是正确的语法。

(请注意,正确的拼写也是 adjacency )。