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;
}
Esempio n. 2
0
/**
 Função que libera a memória de uma instância da estrutura Lista, liberando a memória de todos os nós encadeados na lista, incluindo os nós cabeça e cauda.
 */
void LIS_Destruir(Lista lista)
{
    No atual = lista->cabeca;
    while( atual != NULL )
    {
        No destruido = atual;
        atual = atual->proximo;
        DestruirNo(destruido);
    }
    free(lista);
}
/*
 Função que remove um valor no início da lista.
 @param lista - lista em que será feita a remoção
 @return retorna o valor do elemento removido. Retorna -1 caso a lista esteja vazia.
 */
int LIS_RemoverInicio(Lista lista)
{
        if (lista->cabeca->proximo == lista->cauda) {
          return -1;
        }

        else{
          No primeiro = lista->cabeca->proximo;

          lista->cabeca->proximo = primeiro->proximo;
          primeiro->proximo->anterior = lista->cabeca;
          int valorretirado = primeiro->valor;

          DestruirNo(primeiro);

          lista->tamanho--;

          return valorretirado;
        }
}
Esempio n. 4
0
/*
 Função que remove um valor no início da lista.
 */
string LIS_RemoverInicio(Lista lista)
{
    string menosum = "menosum";
    if (lista->cabeca->proximo == lista->cauda){
        return menosum;
    }
    else{
        No primeiro = lista->cabeca->proximo;

        lista->cabeca->proximo = primeiro->proximo;
        primeiro->proximo->anterior = lista->cabeca;
        
        string valorremovido = primeiro->conteudo;

        DestruirNo(primeiro);

        lista->tamanho--;

        return valorremovido;
    }
}
/*
 Função que remove um valor no fim da lista.
 @param lista - lista em que será feita a remoção
 @return retorna o valor do elemento removido. Retorna -1 caso a lista esteja vazia.
 */
int LIS_RemoverFim(Lista lista)
{
    if (lista->tamanho == 0){
        return -1;
    }

    else{
        No ultimo = lista->cauda->anterior;

        lista->cauda->anterior = ultimo->anterior;
        ultimo->anterior->proximo = lista->cauda;
        int valorremovido = ultimo->valor;

        DestruirNo(ultimo);

        lista->tamanho--;

        return valorremovido;
    }
    
}