ページ 11

領域開放

Posted: 2011年7月20日(水) 14:54
by yuuma
学校の課題でプログラムを組む過程で出てきた関数について質問です。

コード:

typedef struct  LinkedListNode{
   
  int data;
  struct LinkedListNode *next;
} LinkedListNode;

typedef struct LinkedList{
  
  int node_num;
  struct LinkedListNode *head;
} LinkedList;


LinkedListFree(LinkedList *list)
{
    LinkedListNode *ptr; /* 注目ノードへのポインタ */
    LinkedListNode *rem; /* 削除ノード */

    ptr = list->head;

    while (ptr) { /* 終端ノードに到達するまでループ */
	rem = ptr;
	ptr = ptr->next;
	free(rem);
    }
    free(list);
}
連結リストで確保した領域を開放する関数らしいのですが、やっていることがいまいちわかりません。
while文内でそれぞれのノードの領域を開放し、最後にリストの領域を開放するってかんじなのでしょうか??

Re: 領域開放

Posted: 2011年7月20日(水) 16:29
by みけCAT
そんな感じですね。

Re: 領域開放

Posted: 2011年7月20日(水) 17:23
by non
データ構造の問題を考えるときは、必ず絵を描きましょう。

コード:

①	ptr = list->head;
 
    while (ptr!=NULL) { /* 終端ノードに到達するまでループ */
②    	rem = ptr;
③    	ptr = ptr->next;
    	free(rem);
    }
    free(list);

Re: 領域開放

Posted: 2011年7月21日(木) 12:44
by yuumawa
わざわざ図までありがとうございます!
参考になりました!