Ir ao conteúdo

Posts recomendados

Postado

Na criação da lista a ordem a inserção estava invertida.

 

Na função que elimina o valor do meio, estava apontando para uma variável criada na própria função e não para a lista oficial, impedindo que a eliminação fosse concluída corretamente.

 

Segue as funções corrigidas e comentadas os pontos alterados:

 

ponteiro criar_lista(ponteiro pont)
{

    int valor;
    ponteiro aux = NULL;

    if (pont != NULL) /* Se escolher novamente a opção de criar lista, eliminará a lista antiga */
        free(pont);

    printf("\n\n");
    printf("Entre com o Valor: ");
    scanf("%i", &valor);

    while ( valor >  )
    {
        /* Cadastra primeiro elemento na lista */
        if (pont == NULL)
        {
            pont = malloc(sizeof(struct NO));
            pont->info = valor;
            pont->link = NULL;
            aux = pont;
        }
        else /* Insere os demais */
        {
            aux->link = malloc(sizeof(struct NO));
            aux = aux->link;
            aux->info = valor;
            aux->link = NULL;
        }

        printf("Entre com o Valor: ");
        scanf("%i", &valor);
    }

    return pont;
}


ponteiro remove_meio(ponteiro pont)
{
    ponteiro aux1 = NULL;
    ponteiro aux2 = NULL;
    int cont, meio;

    if(pont != NULL)
    {
        if (pont->link == NULL)
        {
            free(pont);
            pont = NULL;
        }
        else
        {
            meio = contagem_nos(pont);
            if ((meio % 2) >  ) /* Aponta para o valor central da lista */
                meio = (meio / 2) + 1;
            else
                meio = meio / 2;

            aux1 = pont;
            cont = 2;
            while (cont < meio)
            {
                aux1 = aux1->link;
                cont++;
            }
            aux2 = aux1->link;
            aux1->link = aux1->link->link;
            free(aux2);
        }
    }
    else
    {
        printf("Lista Vazia!");
    }

    return pont;
}

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!