Sponny
Lt. Commander
- Registriert
- März 2008
- Beiträge
- 1.052
Hallo Leute,
ich habe soeben ein Programm geschrieben, das eine doppelt verkettete Liste implementiert.
Meine Frage bezieht sich auf die Funktion free_list. Habe ich hier die Deallokierung des Speichers im Heap mit der free() Funktion aus der stdlib.h korrekt angewendet?
Vielen Dank im Voraus.
ich habe soeben ein Programm geschrieben, das eine doppelt verkettete Liste implementiert.
Meine Frage bezieht sich auf die Funktion free_list. Habe ich hier die Deallokierung des Speichers im Heap mit der free() Funktion aus der stdlib.h korrekt angewendet?
Vielen Dank im Voraus.
/*
* main.c
*
* Created on: 20.01.2015
* Author: Sponny
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct dl_list_t{
struct dl_list_t *prev;
int value;
struct dl_list_t *next;
}dl_list_t;
int sumlist(dl_list_t *a){
int sum = 0;
dl_list_t *h;
h = a;
while(h->next != NULL){
sum = sum + h->value;
h = h->next;
}
sum = sum + h->value;
return sum;
}
void free_list(dl_list_t *a){
dl_list_t *h;
h = a;
while(h->next != NULL){
free(h);
h = h->next;
}
free(h);
}
int main (){
dl_list_t *l1;
dl_list_t *l2;
dl_list_t *l3;
l1 = calloc (1, sizeof(dl_list_t));
l2 = calloc (1, sizeof(dl_list_t));
l3 = calloc (1, sizeof(dl_list_t));
l1->prev = NULL;
l1->value = 12;
l1->next = l2;
l2->prev = l1;
l2->value = 4;
l2->next = l3;
l3->prev = l2;
l3->value = 2014;
l3->next = NULL;
dl_list_t *anfang = l1;
printf("%d", sumlist(anfang));
free_list(anfang);
return 0;
}