2016-11-18 14 views
1

コンパイラが動作を停止してノードを追加できない場合は、問題が見つかっていませんロジックや構文のあなたstruct Record* CreateNode()機能でリンクリストに新しいノードを追加しようとしたときに、既存のリンクリストに新しいノードを追加する

struct Record* CreateNode() 
{ 
struct Record* PointerToRecord ; 
PointerToRecord = (struct Record*) malloc(sizeof(struct Record*)); 
if(PointerToRecord) 
{ 
    PointerToRecord -> C = FillDataOfContacts(); 
    PointerToRecord -> Next = NULL; 
    PointerToRecord -> Prev = NULL; 
} 
return PointerToRecord ; 
} 

struct Record* AddNode() 
{ 
if (Head == NULL && Tile == NULL) 
{ 
    Head = Tile = CreateNode(); 
} 
else 
{ 
    struct Record* Pointer ; 
    Pointer = CreateNode(); 
    Tile -> Next = Pointer ; 
    Pointer -> Prev = Tile ; 
    Pointer -> Next = NULL; 
    Tile = Pointer ; 
} 
} 
+0

エラーメッセージを表示する必要があります。「コンパイラが動作しなくなります」というメッセージは役に立ちません。 – pm100

+0

事実起こった!コードブロックがうまく閉じていない作業を停止! – AlameerAshraf

+0

@AlameerAshraf [最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を追加し、[小さなプログラムをデバッグする方法](http://ericlippert.com/ 2014/03/05/how-to-debug-small-programs /)を参照してください。 –

答えて

3

、あなたが持っている:ここでは

PointerToRecord = (struct Record*) malloc(sizeof(struct Record*)); 

あなたはstruct recordではなく、あなたがstruct record*

を格納するためのメモリを割り当てる格納するのに十分なメモリを割り当てていません

は、このように割り当てる試してみてください。また

PointerToRecord = (struct Record*) malloc(sizeof(struct Record)); 

を、あなたは、malloc関数の戻り値をキャストする必要はありません:Here's why

ので、あなたは、次のようにポインタを割り当てることができます(クリック)

PointerToRecord = malloc(sizeof(struct Record)); 
関連する問題