2016-12-02 10 views
0

リンクリストの配列を使用して別々のチェーンを実装しようとしています。最初は構造体配列を初期化しました。構造体配列は最終的には10個のヘッドノードで構成され、最初は0ではなく何もノードにありません。nullで構造体配列を初期化するC++

私はこれが働くだろうと思った:

void Hash::sepChain(int key){ 
    int i; 

    //initialize array with Null 
    myNode a[10]; 
    for(i=0; i<10; i++){ 
     a[i] = NULL; 
    } 

    myNode->item = key; 
    myNode->next = a[key%tableSize]; 
    a[key%tableSize] = myNode; 

} 
が、私はこのエラーを取得しています。

hash.cpp:176:10: error: no viable overloaded '=' 
a[i] = NULL; 
~~~~^~~~~ 
./hash.hpp:30:8: note: candidate function (the implicit copy assignment operator) 
    not viable: no known conversion from 'long' to 'const myNode' for 1st 
    argument 
struct myNode{ 
^

これは私が

struct myNode{ 
    int item;// the value that goes into the node 
    myNode *next; 
}; 

なぜ私はこのエラーを取得していますし、どのように私はそれを修正することができ.HPPで構造体を書いた方法ですか?ありがとうございました。

+0

あなたは '*'が欠けているようです。 'myNode a [10];'それは 'myNode * a [10];'でなければなりません。 – NathanOliver

+0

ここではほとんどすべての初心者がリンクリストを実装しようとしている理由がわかりません。まず、 'std :: list'が存在し、2番目のリンクされたリストはデータが非常に大量で、任意の場所に挿入しなければそれほど素晴らしいものではありません。 –

+3

@GuillaumeRacicot新しいCS学生の典型的な宿題の問題です。標準コンテナを使用する前に独自のコンテナを作成する必要があります。 – NathanOliver

答えて

0

ポインタを参照しないNULL変数には設定できません。あなたがNULLにの要素をinizializeしたい場合は、

myNode *a[10] 
+0

コンパイルされません。配列の構文がどのように動作するかを改めてください。 –

+0

私の間違い申し訳ありません。それは私の気晴らしでした –

1
a[i] = NULL; 

としてそれを宣言する必要があり、その操作のLHSはタイプmyNodeの目的であるので、右ではありません。 myNodeへのポインタではありません。

a[i] = myNode{}; 

はまた、使用することができます:

myNode a[10] = {}; 

をしてforループを取り除く

あなたは使用することができます。

+0

それは私に "エラー:期待された '(関数型のキャストまたは型の構築のために" – mike

+0

"あなたが' {} '構文、別名' -std = C++ 11 'for g ++ and clang。C++ 11を使用できない場合は、代わりにmyNodeを' myNode() 'で初期化してください。 – Asu

関連する問題