2016-04-11 17 views
-1

リンクされたリストと構造を使って作業を始めました。次のコードは、呼び出されると犬の構造に新しい犬を追加する関数です。私は最初の犬に入るときにセグメンテーション違反を得ることはありませんが、私は別の犬に入るときにのみ、この問題を取得します。私はこれを解決する方法がわからないので、どんな助けでも大歓迎です。セグメンテーションフォールト

if(list == NULL){ 
      list = new_node; 
      return list; 
    } 

    while(p->next != NULL){ 
      p = p->next; 
    } 
    p->next = new_node; 
    return list; 
} 

答えて

1
あなただけの下部に whileループに入る前 pを初期化する必要があり

:機能に早く、無関係な注記で

p = list; 
while (p->next != NULL) { 
    p = p->next; 
} 

、重複した患者数をチェックするとき、あなたはおそらくしたいですbreak;return list;に変更すると、ループを終了して新しいノードをリストに追加し続けます。

+0

今すぐ完璧です!ご協力いただきありがとうございます! – YellowBird

0

ここでpをリセットする必要があります。この時点ではnullで、逆参照しています。

p = list; // add this 

while(p->next != NULL) 
{ 
    p = p->next; 
} 
p->next = new_node; 
return list; 
関連する問題