2011-05-01 181 views
3

我有了找到最短路径(Dijkstra算法)的程序,我已经决定使用指针结构数组,我不断收到此错误:C++数组的指针,以结构

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; 
} 

我在做什么错?

回答

3

你是......试图分配一个指向int的指针。你不能那样做。

int *pointerArray[20]; 

将需要

Node *pointerArray[20]; 

但是,当你这样做:

pointerArray[i]=&(*n); 

你这样做:

pointerArray[i] = n; 

那是你的意思要做什么?你说你想使用“指向结构的指针数组”。你在这里传递一个指向指针的指针,并试图存储它。

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

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

+0

谢谢你的帮助 – codenamejupiterx 2011-05-01 17:46:23

1

您声明pointerarrayint*[]类型。你想要它是类型Node*[]