Cの初心者として、私は無料で使うべきかどうかは分かりません。私は、リストの最後から要素を削除するpopメソッドに取り組んでいます。また、削除された要素の値も返す必要があります。ここでCでの二重リンクリストの実装のためのPopメソッドフリーで使う必要がありますか?
は私List
とListNode
構造体私のremove_from_back
関数のコードHERESに
typedef struct ListNode {
struct ListNode *next;
struct ListNode *prev;
void *value;
} ListNode;
typedef struct List {
int count;
ListNode *first;
ListNode *last;
} List;
です。ノード典型的
void add_to_back(List *list, void *value)
{
ListNode *node = calloc(1, sizeof(ListNode));
node->value = value;
if (list->first == NULL) {
list->first = node;
list->last = node;
} else {
list->last->next = node;
node->prev = list->last;
list->last = node;
}
list->count++;
}
あなたはCと言いますが、['delete'](http://www.cplusplus.com/reference/new/operator%20delete [] /)はC++演算子です。あなたのノードが['malloc'](http://linux.die.net/man/3/malloc)で割り当てられていたら[' free'](http://linux.die.net/man/3/無料)を解放します。一般的には、ノードを割り当てた人に任せて、ノードを解放してください。それをあなたの機能の一部にしないでください。 – Jens
削除はcに存在しません。多分あなたは自由()を意味するでしょうか? – Pemdas
はい、ありがとうございました、私は質問を更新しました。 @ジェンズはそれを拡大できますか?ノードを削除する関数がある場合、削除するノードを解放する必要があるのはなぜですか? –