Пример #1
0
int insereNaPosicao(LDE *l, void *info, int pos)
{
    if(pos < 0)
        return ERRO_POSICAO_INVALIDA;
    if(pos == 0)
        return insereNoInicio(l, info);

    EleDuplo *aux = l->cabeca;
    int cont = 0;
    while(cont < pos-1 && aux->proximo != NULL)
    {
        aux = aux->proximo;
        cont++;
    }
    if(cont != pos-1)
        return ERRO_POSICAO_INVALIDA;

    EleDuplo *novo = aloca_elemento(l->tamInfo, info);
    if(novo == NULL)
        return 0; //Fracasso
    novo->anterior = aux;
    novo->proximo = aux->proximo;
    aux->proximo = novo;
    if(novo->proximo != NULL)
        novo->proximo->anterior = novo;
    return 1; //Sucesso
}
Пример #2
0
int insereNoFim(LDE *l, void *info)
{
    if(l->cabeca == NULL)
        return insereNoInicio(l, info);

    EleDuplo *aux = l->cabeca;
    while(aux->proximo != NULL)
    {
        aux = aux->proximo;
    }

    EleDuplo *p = aloca_elemento(l->tamInfo, info);
    p->proximo = NULL;
    p->anterior = aux;
    aux->proximo = p;
    return 1; //Sucesso
}
Пример #3
0
int insereNoFim(Lista *l, void *info)
{
	if(l->cabeca == NULL)
	{
		return insereNoInicio(l, info);
	}

	Elemento *aux = l->cabeca;
	while(aux->proximo != NULL)
	{
		aux = aux->proximo;
	}

	Elemento *p = aloca_elemento(l->tamInfo, info);
	p->proximo = NULL;
	aux->proximo = p;
	return 1; //Sucesso
}