Problema C - ordenação vector/ponteiros

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:
para começar , queres ordenar o vector de que maneira?? quais os criterios de ordenação??

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

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