Dynamic List with void pointer insert at start

-1
 t_lista* Cria_Lista(int (*ptrFncEscreve)(void *ptrElemento))
 {
    t_lista *Lista;
    Lista = (t_lista*) malloc (sizeof(t_lista));
    Lista->qtde = 0;
    Lista->ptrFncEscreve = EscreveInteiro;
    return Lista;
}

t_nodeL* Cria_NoLista()
{
    t_nodeL *No;
    No = (t_nodeL*) malloc (sizeof(t_nodeL));//Se usa o tipo, e não a variavel
    return No;
}
int Insere_InicioLi (t_lista *Lista, void *x)
{
    t_nodeL *No = Cria_NoLista();
    No->val = x;
    No->Prox = Lista->inicio;
    No->Ant = NULL;
    No->Prox->Ant = No;
    Lista->inicio = No;
    Lista->qtde++;
    return 1;
 }

I can not insert what's the problem?

    
asked by anonymous 21.03.2017 / 14:16

1 answer

0

You are not checking if it is the first element of the list to be inserted.

int Insere_InicioLi (t_lista *Lista, void *x) 
{
    t_nodeL *No = Cria_NoLista();
    No->val = x;
    if(Lista->qtde == 0)
    {
        Lista->inicio = No;
        Lista->fim = No;
        No->Prox = NULL;
        No->Ant = NULL;
    }
    else
    {
        No->Prox = Lista->inicio;
        No->Ant = NULL;
        No->Prox->Ant = No;
        Lista->inicio = No;
     }
    Lista->qtde++;
    return 1;
}
    
21.03.2017 / 14:32