#include #include typedef struct list { char *str; struct list *next; } list; int main (void) { unsigned int i; list *start, *current; start = NULL; for (i = 0; i < 10; i++) { list *chunk; chunk = malloc (sizeof (list)); chunk->str = malloc (8); sprintf (chunk->str, "hello-%d", i); if (!start) start = current = chunk; else { current->next = chunk; current = current->next; } } current = start; while (current) { puts (current->str); current = current->next; } current = start; while (current) { list *tmp; tmp = current->next; free (current->str); free (current); current = tmp; } exit (EXIT_SUCCESS); }