Example #1
0
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;
}
Example #2
0
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(&copy, 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(&copy, 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(&copy, 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(&copy, tpc_generic_free);
      copy = dllist_copy(list, tpc_generic_clone);
      _start = clock();
      copy = dllist_merge_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 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(&copy, tpc_generic_free);

  return 0;
}