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 (lista_enc_t *lista) { no_t *no = NULL; if (lista == NULL){ fprintf(stderr,"imprimi_lista: ponteiros invalidos"); exit(EXIT_FAILURE); } no = lista->cabeca; while (no){ printf("Dados: %p\n", obtem_dado(no)); no = obtem_proximo(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)); } } } }
void ganntNomenclatura(FILE *fp, lista_enc_t* lista_tarefas) { tarefa_t* p_tarefa; no_t* p_no; int tamanho, i; fprintf(fp, "\t%% Nomenclatura das tarefas\n"); tamanho = tamanho_lista(lista_tarefas); fprintf(fp, "\t\\RowLabel{%d}{CPU}\n", tamanho+1); p_no = obter_cabeca(lista_tarefas); for(i = 0; i < tamanho; i++){ p_tarefa = (tarefa_t*) obter_dado(p_no); fprintf(fp, "\t\\RowLabel{%d}{$\\tau_%d$}\n", i+1, tarefa_get_id(p_tarefa)); p_no = obtem_proximo(p_no); } fprintf(fp, "\n"); }