int remover(ListaEnc* lista, int* item, int pos) { if (lista == NULL) return ESTRUTURA_NAO_INICIALIZADA; if (estahVazia(lista)) return ESTRUTURA_VAZIA; if (pos < 0 || pos >= lista->tam) return INDICE_INVALIDO; No *ant, *atual; if (pos == 0) { return removerDoInicio(lista, item); } else { // prepara para remover ant = NULL; atual = lista->inicio; for(int i = 0; i < pos; i++) { ant = atual; atual = atual->prox; } // remove o nó atual ant->prox = atual->prox; if (item != NULL) *item = atual->item; free(atual); atual = NULL; } lista->tam--; return OK; }
int liberarLista(ListaEnc* lista) { if (lista == NULL) return ESTRUTURA_NAO_INICIALIZADA; // remove todos os elementos da lista while(!estahVazia(lista)) remover(lista, NULL, 0); free(lista); lista = NULL; return OK; }
int obterElemento(ListaVet* lista, int* item, int pos) { if (lista == NULL) return ESTRUTURA_NAO_INICIALIZADA; if (estahVazia(lista)) return ESTRUTURA_VAZIA; if (!verificaIndice(lista, pos, FALSE)) return INDICE_INVALIDO; *item = lista->itens[pos]; return OK; }
int removerDoInicio(ListaEnc* lista, int* item) { if (lista == NULL) return ESTRUTURA_NAO_INICIALIZADA; if (estahVazia(lista)) return ESTRUTURA_VAZIA; No *aux = lista->inicio; if (item != NULL) *item = aux->item; lista->inicio = aux->prox; free(aux); aux = NULL; lista->tam--; return OK; }
int obterElemento(ListaEnc* lista, int* item, int pos) { if (lista == NULL) return ESTRUTURA_NAO_INICIALIZADA; if (estahVazia(lista)) return ESTRUTURA_VAZIA; if (pos < 0 || pos >= lista->tam) return INDICE_INVALIDO; if (item == NULL) return PARAMETRO_INVALIDO; No *aux; aux = lista->inicio; for(int i = 0; i < pos; i++) { aux = aux->prox; } *item = aux->item; return OK; }
int remover(ListaVet* lista, int* item, int pos) { if (lista == NULL) return ESTRUTURA_NAO_INICIALIZADA; if (estahVazia(lista)) return ESTRUTURA_VAZIA; if (!verificaIndice(lista, pos, FALSE)) return INDICE_INVALIDO; *item = lista->itens[pos]; // Desloca elementos para a esquerda. int i; for(i = pos; i < (lista->ultimo - 1); i++) { lista->itens[i] = lista->itens[i + 1]; } lista->ultimo--; return OK; }
int obterPosicao(ListaVet* lista, int* pos, int elemento){ if (lista == NULL) return ESTRUTURA_NAO_INICIALIZADA; if (estahVazia(lista)) return ESTRUTURA_VAZIA; int i; for(i=0;i<lista->ultimo;i++){ if(elemento== lista->itens[i]){ elemento=i; *pos = elemento; } } if (elemento!=*pos) return -1; return OK; }