2014-04-22 107 views
2

我想動態地創建一個大小爲'n'的數組,其中可以包含指向多個鄰接列表的指針。然而,當我運行我的代碼,它不會導致節點的陣列,它只是導致了這一點:如何動態創建指針數組?

Netbeans debugging variables

這不是一個陣列,它只是一個節點。

這裏是我的代碼:

的main.cpp

#include "graph.h" 
using namespace std; 

int main() { 
    graph g; 
    return 0; 
} 

graph.cpp

#include "graph.h" 

// Constructor 
graph::graph() 
{ 
    int size = 5; // 
    // Allocate array of size (n) and fill each with null 
    adjListArray = new node*[size]; 

    // Set each entry in array to NULL 
    for (int i = 0; i < size; i++) 
    { 
     adjListArray[i] = NULL; 
    } 
} 

graph.h

#include<cassert> 
#include<iostream> 
#include<string> 
#include<fstream> 
using namespace std; 

struct node 
{ 
    int name; 
    node *next; 
}; 

class graph 
{ 
    public: 
     // Constructors/destructors 
     graph(); 
     ~graph(); 

    private: 
     node** adjListArray; // Array of pointers to each adjacency list 
}; 

我要去哪裏錯了?

+1

不知道我看到任何問題。這可能是您的調試器代表數據的問題......以及是否可以強制它將adjListArray顯示爲數組。請記住,你顯示的屬性沒有被聲明爲一個數組,而是作爲'node **'聲明的。 – jsantander

回答

1

問題是,當你只有一個指向內存開始的指針時,沒有辦法告訴內存有多大,所以你的IDE只是假設它的大小是sizeof(datatype),只顯示第一個元件。

+0

我非常愚蠢地盲目地相信調試器,而不是測試自己是否存在這些值。問題解決了,謝謝。 – mb595x