以下のようにリストを作成した時、メモリの開放は次のようなコードで正しくできているでしょうか
c
1 while (p->prev!= NULL) { 2 tmp = p; 3 p = p->prev; 4 free(tmp); 5 }
c
1typedef struct _dList { 2 struct _dList *prev; /* pのオブジェクトへのポインタ */ 3 struct _dList *next; /* 後ろのオブジェクトへのポインタ */ 4 int data; 5} dList; 6dList * addList(dList ** pstart, int data) { 7 dList *p, *new; 8 p = *pstart; 9 if ((new = (dList *)malloc(sizeof(dList))) == NULL) { 10 return NULL; 11 } 12 new->data = data; 13 new->prev = new->next = NULL; 14 if (p != NULL) { 15 while (p->next != NULL) { 16 p = p->next; 17 } 18 p->next = new; 19 new->prev = p; 20 } 21 else { 22 *pstart = new; 23 } 24 return new; 25} 26int main() { 27 dList*p, *tmp; 28 p = NULL; 29 int data; 30 while (scanf("%d", &data) != EOF) { 31 p = addList(&p, data); 32 } 33 return 0; 34} 35
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。