Jump to content

Ordenar listas ligadas


fabituh13

Recommended Posts

fabituh13

Ola pessoal...eu estou a fazer um trabalho em C, que permite o registo de passagens nas portagens. A funcionalidade que nos pedem é:

  • Inserir um condutor
  • Listar condutores
  • Inserir carros
  • Listar carros
  • Ler dados de ficheiros

Estas são as funcionalidades base. Depois uma das funcionalidades extra é:

  • Ordenar carros por matricula, marca e modelo.

Os carros estão armazenados numa lista ligada. Nós usamos um algoritmo de ordenação, mas por alguma razão está a dar erro.

O código relevante à estrutura carro é o seguinte:

typedef struct carro
{
  char *Codigo;
  char *Matricula;
  char *Marca;
  char *Modelo;
  char *Ano;
  char *CodigoDono;
}CARRO;

typedef struct nocarro
{
  CARRO *inf;
  struct nocarro *seg;
}NOCARRO;

typedef struct listacarros
{
  NOCARRO *inicio;
  int nel;
}LISTACARROS;

Para ordenar utilizamos um algoritmo bubblesort:

void OrdenarCarroMatricula(CARRO* C, int ncarros)
{
  int j;
  bool houveTroca;
  do
  {
     houveTroca = false;
     for (j= 0; j< ncarros-1; j++)
     if (strcmp(C[j].Matricula,C[j+1].Matricula)>0)
     {
         houveTroca = true;
         trocacarro(&C[j], &C[j+1]);
     }
  } while (houveTroca);
}

Alguém poderia perceber o que há de errado no código??

Link to post
Share on other sites
HappyHippyHippo

O código relevante à estrutura carro é o seguinte:

typedef struct carro
{
 // ...
}CARRO; // <-----------------------------------------------------

typedef struct nocarro
{
}NOCARRO; // <----------------------------------------------------

typedef struct listacarros
{
}LISTACARROS; // <-----------------------------------------------------

Para ordenar utilizamos um algoritmo bubblesort:

void OrdenarCarroMatricula(CARRO* C,  // <-----------------------------------------------
                          int ncarros)
{
// ...
}

não te parece que esteja algo errado ao juntar a informação assinalada ?

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to post
Share on other sites
thoga31

"carro" não define uma lista ligada, e tu na função queres organizar uma lista ligada. Não será outro tipo de dados aquele que deve ser passado à função?

Knowledge is free!

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.