gpt4 book ai didi

C++ 结构指针数组

转载 作者:太空狗 更新时间:2023-10-29 21:07:08 24 4
gpt4 key购买 nike

我有一个程序必须找到最短路径(Dijkstra 算法),并且我决定使用指向结构的指针数组,但我不断收到此错误:

In function ‘void insertNode(Node**, int)’:
TDA.cpp:14: error: cannot convert ‘Node**’ to ‘int*’ in assignment

这是我的代码:

struct Node{int distance, newDistance;};
int *pointerArray[20];

void insertNode(Node **n, int i)
{
pointerArray[i] = &(*n);
}

Node *createNode(int localDistance)
{
Node *newNode;
newNode = new Node;
newNode->distance = localDistance;
newNode->newDistance = 0;

return newNode;
}

int main()
{
Node *n;
int random_dist = 0;
int i;

for(i=0; i<20; i++)
{
if (i==0)
{
n = createNode(0);
cout << n->distance << " distance " << i << endl;
}
else
{
random_dist = rand()%20 + 1;
n = createNode(random_dist);
cout << n->distance << " distance " << i << endl;
insertNode(&n, i);
}
}
return 0;
}

我做错了什么?

最佳答案

您正在...尝试将指针分配给 int。你不能那样做。

int *pointerArray[20];

需要

Node *pointerArray[20];

但是,当您这样做时:

pointerArray[i]=&(*n);

你这样做:

pointerArray[i] = n;

这就是你的意思吗?你说你想使用“指向结构的指针数组”。您正在将指针传递给此处的指针,并尝试存储它。

void insertNode(Node *n,int i)
{
pointerArray[i] = n;
}

将节点指针存储在数组中。

关于C++ 结构指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850047/

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