#include <stdio.h>
#include <stdlib.h>

#include "prova-listdup.c"

FILE *Arq;

troca(x1,y1,x2,y2)
float *x1,*y1,*x2,*y2;
{
  float temp;
  
  temp=*x1;
  *x1=*x2;
  *x2=temp;
  temp=*y1;
  *y1=*y2;
  *y2=temp;  
}

void ordena_bubble_ld (LD)
Nodo_LD **LD;
{
   Nodo_LD *aux;
   int trocou;
   int continua;

   aux = *LD;
   continua=1;
   
while (continua)
{
   trocou=0;
   aux= *LD; /* Volta ao inicio */
   while ( aux != NULL && aux->Proximo != NULL )
   {
         if (aux->X > aux->Proximo->X)
         {
             troca(&(aux->X),&(aux->Y),&(aux->Proximo->X),&(aux->Proximo->Y));
             trocou=1;           
         } 
         else
         if ((aux->X == aux->Proximo->X)  &&
             (aux->Y >  aux->Proximo->Y))
         {
             troca(&(aux->X),&(aux->Y),&(aux->Proximo->X),&(aux->Proximo->Y));
             trocou=1;      
         }
             
         aux = aux->Proximo;
   } 
   if (!trocou) continua=0;
}

printf ("Ordenado\n");
}

main()
{
   int trocou;
   int qtde;
   int i;
   
   Nodo_LD *ListaDupla;
   Tipo_Dado vx,vy;
  
   inicializa_ld(&ListaDupla);

   Arq=fopen("dados.txt","rt");
   if (Arq == NULL)
   {
       printf("\n## Erro na abertura do arquivo ##\n");
       system("pause");
       exit(0);
   }   
   
   fscanf(Arq,"%d",&qtde);
    
   for (i=0; i < qtde; i++)
   {
     fscanf(Arq,"%f %f",&vx,&vy);
     insere_inicio_ld(&ListaDupla,vx,vy);
   }
     
   printf("Quantidade de dados Lidos: %d\n",qtde);
   posiciona_inicio_ld(&ListaDupla);
   exibe_ld(&ListaDupla);
   
   printf("\n");
   
   posiciona_inicio_ld(&ListaDupla);
   ordena_bubble_ld(&ListaDupla);

   printf("\n");
   
   posiciona_inicio_ld(&ListaDupla);
   exibe_ld(&ListaDupla);
   
   printf("\n");
   system("pause");   
}
