• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tjsneves

ordenar lista ligada

5 mensagens neste tópico

boas..eu gostava de saber se é possível usar uma só função para ordenar todos os campos de uma estrutura de uma lista ligada tendo em conta que são todos char...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é um bocado... abstracto B)

O que entendes por "ordenar todos os campos"?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por exemplo tendo uma estrutura com nome,morada e destino se quiser arranjar uma funçao que ordene por um dos campos que o utilizador peça...e que tou a ver e acho k neste caso tenho de fazer cada uma das funçoes a mao..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nem por isso.

Se souberes ordenar uma lista ligada que contenha inteiros, ordenar isso é semelhante só que o critério de comparação será um strcmp. Só precisas de receber um número para saber qual o critério de comparação a utilizar, por exemplo 1 para nome, 2 para morada e 3 para destino. Supondo que os nós da tua lista ligada são "struct No" e que tens strings nome, morada e destino em cada um deles, a função que compara dois nós seria algo deste estilo:

int compara(struct No* no1,struct No* no2,int criterio) {
  switch(criterio) {
    case 1: return strcmp(no1->nome,no2->nome);
    case 2: return strcmp(no1->morada,no2->morada);
    case 3: return strcmp(no1->destino,no2->destino);
  }
}

Se antes tinhas uma lista ligada com números e fazias:

if(no1->num > no2->num)

agora farias:

if(compara(no1,no2,criterio)) //criterio: 1--nome, 2--morada, 3--destino

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok...vou tentar por a funcionar...dps digo algo.obrigado ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora