void * get_data_index(lista_enc_t *list, int index) { int i = 0; no_t * no; if (list == NULL) { fprintf(stderr, "get_data_index: Invalid pointer!"); exit(EXIT_FAILURE); } if (index == 0) return obtem_dado(list->cabeca); if (index == list->tamanho -1) return obtem_dado(list->cauda); no = list->cabeca; while (no && i <= index){ no = obtem_proximo(no); i++; } return obtem_dado(obtem_anterior(no)); }
void imprimi_lista_tras (lista_enc_t *lista) { no_t *no = NULL; if (lista == NULL){ fprintf(stderr,"imprimi_lista: ponteiros invalidos"); exit(EXIT_FAILURE); } no = lista->cauda; while (no){ printf("Dados: %p\n", obtem_dado(no)); no = obtem_anterior(no); } }
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)); } } } }