我正在尝试使用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
}
}
答案 0 :(得分:0)
请参阅this question的答案。 adj[i]
等同于*(adj+i)
。您要从G->adj
开始偏移,然后取消引用,因此G->adj[i].vertexNumber
是正确的语法。
(请注意,正确的拼写也是 adjacency )。