2011-05-01 182 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*[]