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

Problema C - ordenação vector/ponteiros

Discussão em 'Programação' iniciada por slipknoize, 22 de Maio de 2009. (Respostas: 6; Visualizações: 2832)

  1. slipknoize

    slipknoize 1st Folding then Sex

    Boas!

    Estou a fazer um projecto, e deparei-me com o problema... Agradeço ajuda.

    Tenho um vector de estruturas e cada uma dessas estruturas tem um vector de apontadores para outras estruturas. Algo do género:

    Código:
    struct elem{
           char *name;
           int sum;
           struct elem **elem_pointer;
    };
    
    elem elem_vec[];
    O meu problema está quando faço a ordenação do elem_vec[], os apontadores elem_pointer ficam a apontar para a posição no vector e não para a estrutura elem correcta. O objectivo é que o vector elem_pointer fique sempre com os endereços das estruturas correctas, mesmo depois da ordenação. Há forma de resolver isto?

    Cumps!
     
    Última edição: 22 de Maio de 2009
  2. para começar , queres ordenar o vector de que maneira?? quais os criterios de ordenação??
     
  3. slipknoize

    slipknoize 1st Folding then Sex

    Quero ordenar pelo número sum. Do menor para o maior.

    Mas acho que já sei como resolver o problema, em vez de ter um vector de estruturas (elem elem_vec[];) , se tiver um vector de apontadores para estruturas (elem *elem_vec[];) acho que o problema fica resolvido.

    De qualquer forma agradeço sugestões.

    EDIT: Ficou resolvido utilizando vector de apontadores, em vez de vector de estruturas.
     
    Última edição: 23 de Maio de 2009
  4. Ninja_SeveN

    Ninja_SeveN Power Member

    De qualquer forma, se alguma vez te deparares com esse problema, há diversos algoritmos de ordenação bastante gerais.

    Entre eles tens o insertion sort, o selection sort, o bubble sort ou o quick sort. O último é o melhor, mas também o mais complicado de perceber. Dá uma olhadela na wikipedia sobre eles e se tiveres dúvidas pergunta.

    PS.: Existem mais algoritmos de ordenação se quiseres, mas esses devem chegar.
     
  5. slipknoize

    slipknoize 1st Folding then Sex

    Já tenho a ordenação feita, estou a usar o algoritmo mergesort, não posso usar o quicksort porque não é um algoritmo estável.
     
  6. Ninja_SeveN

    Ninja_SeveN Power Member

    Mas dá para estabilizá-lo e garantir que 90% das vezes dá nlog(n). Mas isso dá trabalho e tu já o deves saber:P.
     
  7. slipknoize

    slipknoize 1st Folding then Sex

    Estava-me a referir ao tipo de ordenação do algoritmo e não ao algoritmo em si.
    Queria dizer "não posso usar o quicksort porque não é um algoritmo de ordenação estável".

    Obrigado pela ajuda!
     

Partilhar esta Página