リンクリストの抽象化を実装しようとしていますが、問題にぶつかっています。一度私はリンクされたリストを作成し、要素を追加します。リストを印刷すると、最初の要素が無限ループで印刷されます。つまり、最初の要素がリンクされているか、または印刷機能が正しくありません。しかし、私は問題を見つけることができない、誰かを助けることができる?Cでリンクされたリストは、正しく構築されているリストですか?
次は、リストの抽象化である:それは何か大きなものの一部であるとして
typedef struct _friend {
char *firstname;
char *lastname;
char birthdate[9];
} friend;
typedef struct _node {
friend *value;
struct _node *next;
} node;
typedef struct _linkedlist {
node *head;
} linkedlist;
プログラムは、この抽象化に従わなければなりません。 は、以下のリストを印刷し、リストの先頭にノードを追加すべき機能です:printList
ISNでfor
ループ
void printList(linkedlist *llist,FILE *fp)
{
node *n;
friend *f;
// for each node, print out the friend attached to it
for(n = llist->head; n != NULL ; n = n->next)
{
// assign f to the friend of the right node
f = n->value;
// print the friend out
fprintf(fp,"%s %s: %s\n",
f->firstname, f->lastname, f->birthdate);
}
}
llistがNULLであるかどうかを確認していますが、すぐにそのリストに書き込んでいます。あなたはllist-> headがヌルかどうかを知っていますか? – templatetypedef
'if(llist == NULL)'と 'else'ブロックで同じ操作を*正確に*実行することに気づいていますか? – wildplasser