1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ordenar lista ligada C++

Discussão em 'Programação' iniciada por Quarq, 11 de Maio de 2007. (Respostas: 0; Visualizações: 4207)

  1. Quarq

    Quarq Power Member

    Boas! Tenho que ordenar uma lista ligada á unha recorrendo só à manipulação de apontadores e isto está sempre a dar bronca>(

    struct Nodo {
    double valor;
    Nodo* next;
    }* start = NULL;

    class ListaLigadaDouble{

    private:
    Nodo nodo;
    int tamanho_lista;

    public:

    void set_tamanho(int tamanho);
    void inserir(double valor);
    void remover(int posicao);
    double ler(int posicao);
    int tamanho();
    int contem(double valor);
    void imprime();
    void ordenar();
    void troca(Nodo* actual, Nodo* seguinte); // Método auxiliar para a ordenação!


    };

    void ListaLigadaDouble :: troca(Nodo* actual, Nodo* seguinte){
    Nodo* aux;
    aux = start;

    if(actual == start){
    actual->next = seguinte->next;
    seguinte->next = aux;
    aux = seguinte;
    }
    else{
    actual->next = seguinte->next;
    seguinte->next = actual;
    }
    }


    void ListaLigadaDouble :: ordenar(){
    int cont;
    Nodo* temp = start;

    for(cont=1; cont<tamanho_lista; cont++){
    while(temp->next){
    if(temp->valor > temp->next->valor){
    troca(temp, temp->next); // Troca os elementos.
    temp = temp->next; // Avança na lista.
    }
    else{ temp = temp->next;}
    }
    }


    Eu sei que isto aqui não é muito perceptivel, mas alguém faz ideia onde meti água?
    }
     

Partilhar esta Página