2016-04-20 11 views
-2

私はこの関数を呼び出そうとしていますが、動的なデータ構造とリンクされたリストに慣れていないので、間違っています。これまでのコードです:関数を呼び出そうとしています

struct Country 
{ 
    string name; 
    double population; 
}; 
struct Node 
{ 
    Country ctry; 
    Node * next; 
}; 
Node * world; 

void push(Country data, Node * & list); 

int main() 
{ 
    Country data; 
    Node list; 

    push(data, list); 
    return 0; 
} 

私は間違っていますか?

+0

ここで、プッシュの定義はありますか? – Spade

+2

push()はポインタへの参照をとります(2番目のパラメータの場合)。ポインターへの参照ではなく、オブジェクトを渡しています。 –

+0

push(data、&list)を押してポインタに変換します。 – Mike

答えて

0

push機能は、「ノードへのポインタへの参照」である、Node*&をとる(常にそれが助け、後方のタイプをお読みください。あなたはNodeである、それをlistを与えている。機能から参照を取得しますその呼び出しが、ノードへのポインタへの参照を与えると言ったのでmainNode*listを作成し、それにメモリを割り当てて初期化するか、Node*という別の変数を作成したいlistNode* ptr = &list;)です。ほとんどの場合、最初のオプションが望ましいでしょう。

0

コメントありがとうございますこれに私のコードを編集して今すぐに動作します

struct Country 
{ 
    string name; 
    double population; 
}; 
struct Node 
{ 
    Country ctry; 
    Node * next; 
}; 
Node * world; 

void push(Country data, Node * & world); 

int main() 
{ 
    Country data; 

    push(data, world); 
    return 0; 
} 
関連する問題