2016-12-21 8 views
1

二重のみを含むリストの合計を取得する必要があります。Cのリストのすべての要素の合計

double sum(DoubleList* list) { 
    DoubleNode *next = NULL; 
    double sum = 0; 
    for (DoubleNode *n = list->first; n != NULL; n = next) { 
     sum += n->value; 
    } 
    return sum; 
} 
+6

2番目の反復で 'next'は' NULL'です。 – ForceBru

+0

DoubleListの定義を提供できますか? – ilim

+0

おそらく、 'for(DoubleNode * n = list-> first; n!= NULL; n = n-> next){'( 'n = n-> next'に気付く)のようなものです。 –

答えて

2

に次のようにあなたのループを修正する必要があります。

double sum(DoubleList* list) { 
    double sum = 0; 
    for (DoubleNode *n = list->first; n != NULL; n = n->next) { 
     sum += n->value; 
    } 
    return sum; 
} 

上記のサンプルコードはDoubleNode 次の命名属性を持ち、次の要素へのポインタを格納タイプDoubleNode *、であると仮定します。

1

あなたはあなたのループの次の要素を取得することを確認する必要があります。ただし、動作しないいくつかの理由 。私はnextポインタがn->nextであることを推測しています:

for (DoubleNode *n = list->first; n != NULL; n = n->next) { 
    sum += n->value; 
} 
+0

はい、動作します。ありがとう! – NoIdea

1

for (DoubleNode *n = list->first; n != NULL; n = next) 

変更を

for (DoubleNode *n = list->first; n != NULL; n = n->next) 
関連する問題