領域開放

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yuuma

領域開放

#1

投稿記事 by yuuma » 14年前

学校の課題でプログラムを組む過程で出てきた関数について質問です。

コード:

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文内でそれぞれのノードの領域を開放し、最後にリストの領域を開放するってかんじなのでしょうか??

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 領域開放

#2

投稿記事 by みけCAT » 14年前

そんな感じですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

non
記事: 1097
登録日時: 14年前

Re: 領域開放

#3

投稿記事 by non » 14年前

データ構造の問題を考えるときは、必ず絵を描きましょう。

コード:

①	ptr = list->head;
 
    while (ptr!=NULL) { /* 終端ノードに到達するまでループ */
②    	rem = ptr;
③    	ptr = ptr->next;
    	free(rem);
    }
    free(list);
添付ファイル
無題.png
無題.png (10.29 KiB) 閲覧数: 1612 回
non

yuumawa

Re: 領域開放

#4

投稿記事 by yuumawa » 14年前

わざわざ図までありがとうございます!
参考になりました!

閉鎖

“C言語何でも質問掲示板” へ戻る