Olá pessoal no novo aqui no fórum. Preciso de ajuda para ordenar uma lista em C. Segue o meu código:
//Criando o tipo celula
typedef struct no celula;
//definindo a estrutura da celula
struct no
{
int numero_atleta;
int raia;
float tempo_chegada;
int numero_prova;
char sexo;
struct no *prox;
};
int tamanho(celula *lista)
{
celula *p;
int i;
i = 1;
p = lista;
while (p->prox != NULL){
p = p->prox;
i++;
}
printf("i= %d\n", i);
return i;
}
void ordenaTempo(celula *lista)
{
int n, r, p,i,j;
char s;
float t;
celula *aux, *aux2;
int tam;
tam = tamanho(lista);
aux = lista;
aux2 = lista->prox;
for(i=1; i<tam-1;i++)
{
for(j=1;j<tam-i;j++)
{
if(aux->tempo_chegada > aux2->tempo_chegada)
{
n = aux->numero_atleta;
r = aux->raia;
t = aux->tempo_chegada;
p = aux->numero_prova;
s = aux->sexo;
aux->numero_atleta = aux2->numero_atleta;
aux->raia = aux2->raia;
aux->tempo_chegada = aux2->tempo_chegada;
aux->numero_prova = aux2->numero_prova;
aux->sexo = aux2->sexo;
aux2->numero_atleta = n;
aux2->raia = r;
aux2->tempo_chegada = t;
aux2->numero_prova = p;
aux2->sexo = s;
}
aux2=aux2->prox;
}
}
lista = aux;
for(aux2=lista; aux2!=NULL; aux2=aux2->prox)
{
printf("Numero atleta: %d \n",aux2->numero_atleta);
printf("Raia: %d \n",aux2->raia);
printf("Tempo chegada: %f \n",aux2->tempo_chegada);
printf("Tempo chegada: %d \n",aux2->numero_prova);
printf("sexo - ( %c ) \n\n",aux2->sexo);
}
}