int chunks_add_tail(chunks_t *c, char *b, int sz) { struct chunk_ctx *ctx = chunk_ctx_alloc(c->pool); if (ctx == NULL) return 0; chunk_ctx_append(c->pool, ctx, b, sz); c->list = dllist_insert_tail(c->list, ctx); c->total_bytes = c->total_bytes + sz; return sz; }
int main() { int list_size, i, choice; dl_node *list = NULL, *copy = NULL; char temp_name[MAX_NOME], temp_phone[MAX_FONE]; double time_result; clock_t _start; do { display_menu(); printf("Escolha uma opção: "); scanf("%d", &choice); switch (choice) { case 1: dllist_free_all(&list, tpc_generic_free); printf("Insira o tamanho total da lista: "); scanf("%d", &list_size); srand(time(NULL)); dllist_create(&list); // Populate with fake data for (i = 0; i < list_size; i++) { sprintf(temp_name, "Fulano %d", rand() / list_size); sprintf(temp_phone, "(%02d) %04d-%04d", rand() % 99, rand() % 9999, rand() % 9999); dllist_insert_tail(&list, tpc_create(temp_name, temp_phone), sizeof(TpContato)); } dllist_print_all_records(list, tpc_generic_print); break; case 2: dllist_free_all(©, tpc_generic_free); copy = dllist_copy(list, tpc_generic_clone); _start = clock(); dllist_insertion_sort(copy, tpc_generic_cmp); time_result = _difftime(_start); dllist_print_all_records(copy, tpc_generic_print); printf("Tempo: %lf segs\n", time_result); break; case 3: dllist_free_all(©, tpc_generic_free); copy = dllist_copy(list, tpc_generic_clone); _start = clock(); dllist_selection_sort(copy, tpc_generic_cmp); time_result = _difftime(_start); dllist_print_all_records(copy, tpc_generic_print); printf("Tempo: %lf segs\n", time_result); break; case 4: dllist_free_all(©, tpc_generic_free); copy = dllist_copy(list, tpc_generic_clone); _start = clock(); dllist_quick_sort(copy, tpc_generic_cmp); time_result = _difftime(_start); dllist_print_all_records(copy, tpc_generic_print); printf("Tempo: %lf segs\n", time_result); break; case 5: dllist_free_all(©, tpc_generic_free); copy = dllist_copy(list, tpc_generic_clone); _start = clock(); copy = dllist_merge_sort(©, tpc_generic_cmp); time_result = _difftime(_start); dllist_print_all_records(copy, tpc_generic_print); printf("Tempo: %lf segs\n", time_result); break; case 6: printf("Bye!\n"); break; default: printf("Opção inválida! [%d]\n", choice); } } while (choice != EXIT_OPTION); dllist_free_all(&list, tpc_generic_free); dllist_free_all(©, tpc_generic_free); return 0; }