gpt4 book ai didi

c++ - 无法在赋值中将 'list*' 转换为 'Node*'

转载 作者:行者123 更新时间:2023-11-28 05:19:58 26 4
gpt4 key购买 nike

我正在尝试构建邻接表。我写的代码如下。

struct Node
{
int dest;
struct Node* next;
};

struct list
{
struct list *head;
};

类定义为:

class Graph
{
private:
int vertix;
list *arr;
public:
Graph(int v)
{
vertix = v;
arr = new list [vertix];
for(int i=0;i<vertix;i++)
{
arr[i].head=NULL;
}
}

Node* getNewNode(int destination)
{
Node* newNode = new Node;
newNode->dest = destination;
newNode->next = NULL;
return newNode;
}

错误在这些函数中:

        void addEdge(int src, int dest)
{
Node* newNode = getNewNode(dest);
newNode->next = arr[src].head;
arr[src].head = newNode;

newNode = getNewNode(src);
newNode->next = arr[dest].head;
arr[dest].head = newNode;

}
void print()
{
cout<<"Adjacency list of vertix: "<<endl;
for(int i = 0; i< vertix; i++)
{
Node *ptr = arr[i].head;
cout<< i << "-->";
while(ptr)
{
cout<< "-->"<<ptr->dest;
ptr=ptr->next;
}
cout<<endl;
}
}

};

我得到的错误信息是:[错误] 无法在赋值中将“list*”转换为“Node*”[错误] 无法在初始化时将 'list*' 转换为 'Node*'

最佳答案

我不确定这是否只是一个错字,但不是

struct list
{
struct list *head;
};

你应该有

struct list
{
Node *head;
};

因为列表的头部是一个节点,而不是另一个列表。这导致此行中的错误:

Node *ptr = arr[i].head;

因为您正在尝试将列表的头部(在您当前的代码中是一个 list*)分配给一个 Node*

关于c++ - 无法在赋值中将 'list*' 转换为 'Node*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41714218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com