2016-10-14 11 views
0

スキップ・リストのデータ構造を作成しようとしています。ここではNodeのためのコードのスナップショットです。C++でスキップ・ノードを実装する

#define MAX_HEIGHT = 20; 
    struct Node { 
     int i; 
     Node *nodes[20]; 
    } 

この場合、私がベクトルを使用すると、動的にサイズを変更できるので、はるかに良いと思います。私は配列を使いたいと思ったらどこに行くのだろうと思っていました。

私はC++を初めて使用しているので、後でインスタンスのサイズを割り当てることができるかどうかは疑問です。言うことですが、ポインタのサイズ2の配列しか持たない別のノードを追加したかったのです。

+0

ダイナミックにヒープにメモリを割り当てる[new operator](http://www.cplusplus.com/reference/new/operator%20new/)について聞いたことがありますか? – PRP

+0

うーん、私は持っています。ドキュメントの例です。私の理解から、新しいMyClass構​​造体を作成しています。しかし、私は、たとえば、ノードのサイズが20ではなく10である新しいNodeを作ることが可能かどうか疑問に思っています。 – h94

+0

クラス 'Node'に対して動的サイズの配列を作成するには、この' Node * node_list = new Node [size]; 'sizeは10,20などの変数です。 __Advantage of thisは 'size'が実行時に決定され、メモリがヒープに割り当てられています.__ – PRP

答えて

0

あなたは、コンストラクタ内であなただけの動的Nodeのポインタの配列を割り当て、デストラクタでそのメモリを解放することを忘れないでください、作成されたノードのコンストラクタに高さを渡すことができます。

struct Node { 
    int i; 
    int height; 
    Node* *nodes; 
    Node(int h) { 
     nodes = new Node*[h]; 
     height = h; 
    } 
    ~Node() { 
     delete [] nodes; 
    } 
}; 
関連する問題