Ir ao conteúdo
  • Cadastre-se

Ordenação de lista usando o método bubble sort


Philipe de Souza

Posts recomendados

Prezados, boa tarde.

 

Estou precisando criar uma função usando lista encadeada simples, sem o uso de vetor ou lista duplamente encadeada.

Preciso ordenar uma lista com números gerados manualmente em ordem crescente, e para isso pretendo usar o método bubble sort, eu devo trocar os nós de posição sem alterar o conteúdo deles.

 

Exemplo de entrada

1 -> 4 -> 3 -> 2

Retorno esperado

1 -> 2 -> 3 -> 4

 

Eu consegui fazer a ordenação caso o usuário insira um ou dois dígitos, mas a partir do 3º eu não consigo, sempre ocorre um erro e não consigo prosseguir.

Código que eu fiz até agora:

 

void bubble_sort(Lista* l)
{
    //SE só tiver um elemento na lista
    if(l->inicio->prox == NULL)
    {
        //retorna a lista pois só contém um elemento
        return l;
    }

    //SE só tiver 2 elementos na lista o terceiro é NULL
    else if(l->inicio->prox->prox == NULL)
    {
        //se o primeiro elemento for menor que o segundo
        if(l->inicio->valor < l->inicio->prox->valor)
        {
            //retorna lista *pois estão em ordem crescente*
            return l;
        }
        else
        {
            No* aux = l->inicio->prox;

            l->inicio->prox = aux->prox;
            aux->prox = l->inicio;
            l->inicio = aux;
        }
    }else
    {
        No* aux = l->inicio;
        No* aux2 = l->inicio->prox;
      
      //aqui é onde devo continuar o código
      
    }
}
int main()
{
	int num = 0,id;
	Lista *l = novaLista();
	No *aux = l->inicio;

    while(num>=0||id<=1000){
    scanf("%d", &num);
    fflush(stdin);
    if(num<0){break;}
    l = push(l, num);
    id++;
    }
    imprimeLista(l);
    bubble_sort(l);
    printf("\n");
    imprimeLista(l);

    return 0;
}

 

Pessoal, aceito humildemente dicas ou sugestões. Obrigado.

 

Link para o comentário
Compartilhar em outros sites

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...