void swap_list(lista_enc_t *list, no_t *fonte, no_t *destino) { if (list == NULL) { fprintf(stderr, "swap_list: Invalid pointer!"); exit(EXIT_FAILURE); } if (list->cabeca == fonte) list->cabeca = destino; if (list->cauda == destino) list->cauda = fonte; swap_nos(fonte, destino); }
void ordena_tarefas(lista_enc_t* lista_tarefas) { tarefa_t* p_tarefa; tarefa_t* p_tarefa_next; no_t* p_no; int tamanho, i; for(tamanho = tamanho_lista(lista_tarefas); tamanho>1; tamanho--){ p_no = obter_cabeca(lista_tarefas); for(i=0; i<(tamanho-1); i++){ p_tarefa = (tarefa_t*) obter_dado(p_no); p_no = obtem_proximo(p_no); p_tarefa_next = (tarefa_t*) obter_dado(p_no); if(tarefa_get_periodo(p_tarefa) > tarefa_get_periodo(p_tarefa_next)){ swap_nos(lista_tarefas, obtem_anterior(p_no)); } } } }