高水準言語の経験はありますが、C は初めてです。単一リンク リストの実装が与えられました。リストを繰り返し処理しようとするたびに、メモリ不足になります (少なくとも、それが起こっていると思います)。リストの実装は次のとおりです。
/*Vertex data type.*/
typedef struct vnode {
struct vnode *NEXT;
int DATA;
} VertexBody;
typedef VertexBody *TypeVertex;
/*List data type (no header, just a pointer to first item).*/
typedef TypeVertex TypeList;
これが私の印刷機能です:
void print_list(TypeList *L) {
TypeVertex v=*L;
while(NEXT(v)!=NULL) {
printf("%d\n", DATA(v));
v=NEXT(v);
}
printf("%d\n", DATA(v));
}
print_list を実行すると、次の出力が得られます (リストに 3 つの頂点が含まれ、データがそれぞれ 1、2、3 に設定されているとします)。
1
2
3
-94064
その後、プログラムがクラッシュします。どうしたの?
編集: 最初の段落で「トラバース」を「反復処理」に変更しました。