2012-03-11 15 views
0

私は、リンクリストのデータ型の小さなサンプルを実装しようとしていました。私は値を保持するstruct Nodeを作成しました。これは、リンクリスト形式ですべてのノードを追跡するstruct Listです。最後に、両方の構造体の一般的なデータ型であるクラス。私はプログラムを実行したとき、私はいつものようにすぐに私はステップに達したとして、セグメントフォルトエラーを得たセグメント障害ポインタ

: アイテム - >リンクを[I ++] =新しいノード(入力)

コード:

struct Node 
{ 
    int val; 

    Node(); 
    Node(int x); 
}; 

struct List 
{ 
    Node *link[20]; 

    List(); 
}; 

class pol 
{ 
    public: 
     void read_txt(ifstream &file); 

    private: 
     List *item; 
}; 

void pol::read_txt(ifstream &file) 
{ 
    int input, i; 
    i = 0; 

    file >> input; 

    cout << "Value read from the file: " << input << endl; 

    while(input != 0) 
    { 
     item.link[i++] = new Node(input); 
     file >> input; 
     cout << "Value read from the file: " << input << endl; 
    } 
} 

私がやろうとしているのは、ファイルを読み込むことによって得られる "input"の値を持つ新しいNodeを作成することです。次に、すべてのノードが接続されたリンクリストを作成したかったのです。

+2

この 'item.link'は' item'が 'List *': 'item-> link'であるのでコンパイルすべきではありません。 – hmjd

答えて

2

メンバーitemは決して初期化されません。私が見る限り、それをポインタにする理由は全くありません。ちょうどそれをList item;にしてください。

+0

もし私がそれをしたら、私が作成しているノードをどうやってリンクすることができますか? – John

+0

@ジョン:あなたが投稿したコードと同じように。item.link [i ++] =新しいノード(入力); '。 (これらのノードはbtwを削除する必要があります。スマートポインタを考慮する必要があります) –