Fervax Posted May 15, 2011 Report Share Posted May 15, 2011 (edited) 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 May 15, 2011 by Fervax Link to comment Share on other sites More sharing options...
alone Posted May 17, 2011 Report Share Posted May 17, 2011 en realidad no se muy bien lo que quieres hacer, pero segun lo que veo en el código, cual es la condición que le entregas al primer while? pareciera que le entregas sólo un parámetro. Link to comment Share on other sites More sharing options...
Fervax Posted May 29, 2011 Author Report Share Posted May 29, 2011 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 More sharing options...
Th3_K4T Posted June 4, 2011 Report Share Posted June 4, 2011 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now