static void l1_destroy(struct L1 *list) { do { l2_destroy(list->down); struct L1 *next = list->next; free(list); list = next; } while (list); }
static void l1_destroy(struct L1 *list, int level) { do { if (1 < level) l2_destroy(list->down, level); struct L1 *next = list->next; if (1 == level) free(list); list = next; } while (list); }
int main() { static struct L1 *list; do l1_insert(&list); while (__VERIFIER_nondet_int()); do { struct L1 *next = list->next; l2_destroy(list->l2); free(list); list = next; } while (list); }