Esempio n. 1
0
/*
 Função que remove um valor numa determinada posição da lista.
 */
string LIS_Remover(Lista lista, int indice)
{    
    string menosum = "menosum";
    if (indice > lista->tamanho || indice <= 0){  
        return menosum;
    }
    
    if(lista->tamanho == 0){
        return menosum;
    }
    if (indice == 1){
        return LIS_RemoverInicio(lista);
    }
    
    No no = lista->cabeca->proximo;

    while (--indice){   
        no = no->proximo;
    }

    string valorremovido = no->conteudo;

    no->anterior->proximo = no->proximo;
    no->proximo->anterior = no->anterior;

    DestruirNo(no);
    
    lista->tamanho--;

    return valorremovido;
}
/*
 Função que remove um valor numa determinada posição da lista.
 @param lista - lista em que será feita a remoção
 @param indice - indica a posição na lista do elemento que se deseja remover
 @return retorna o valor do elemento removido. Retorna -1 caso a lista esteja vazia, ou caso o índice não aponte para uma posição válida da lista.
 */
int LIS_Remover(Lista lista, int indice)
{
    if (indice > lista->tamanho || indice <= 0){  
        return -1;
    }
    
    if(lista->tamanho == 0){
        return -1;
    }
    if (indice == 1){
        return LIS_RemoverInicio(lista);
    }
    
    No no = lista->cabeca;

    while (--indice){   
        no = no->proximo;
    }

    int valorremovido = no->valor;

    no->anterior->proximo = no->proximo;
    no->proximo->anterior = no->anterior;
    lista->tamanho--;

    return valorremovido;
}