Jump to content

Recommended Posts

cambie el código, el anterior no ordenaba nada ese era el problema, pero creo que este debería funcionar... aunque no xD

 

void Lista::Ordenar ( )
{ Nodo *pNodo, *pAux, *pNuevo;

  pNodo=this->head;
  pAux=pNodo->GetNext();

  while(pNodo)
  {
      while(strcmp(pNodo->GetValue( ), pAux->GetValue( ))<0)
      {
          pNodo=pNodo->GetNext();
          pAux=pAux->GetNext();
      }
        pNuevo=pNodo->GetPrev();
        pNuevo->SetNext(pAux);
        pNodo->SetNext(pAux->GetNext());
        pAux->SetNext(pNodo);
        if(pNodo->GetNext())
        {
            pNodo=this->head;
            pAux=pNodo->GetNext();
        }
  }
}

 

get prev -> retorna el nodo anterior

get next -> retorna el nodo siguiente

Edited by Fervax
Link to comment
Share on other sites

  • 2 weeks later...

gracias por responder, perdon por verlo tan tarde es que ya entregue la tarea hace un tiempo xD.

 

while(pNodo) eso significa "mientras pNodo no apunte a nulo"

y while(!pNodo) significa "mientras pNodo apunte a nulo"

 

 

Saludos.

Link to comment
Share on other sites

pNodo=this->head;

pAux=pNodo->GetNext();

 

eso podría tener un error, qué pasa si this->head es null?

getNext() debería devolver null, pero no sé como lo implementaste.

 

Hay muchas cosas que no entiendo en tu código, debiste haberlo comentado más, la primera duda que me surge es qué estás ordenando, porque strcmp es para comparar cadenas de carácteres.... entonces cuáles son tus criterios de ordenamiento??

 

 

este código podría estar malo:

 

while(strcmp(pNodo->GetValue( ), pAux->GetValue( ))<0)

{

pNodo=pNodo->GetNext();

pAux=pAux->GetNext();

}

 

porque no evalúa si pNodo existe, por lo que debería entrar en un buble infinito y en algún momento se caería o tiraría error de memoria.

Link to comment
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...