document.write('<link rel="stylesheet" type="text/css" href="http://www.naslu.com/css/SyntaxHighlighter.css" />');
document.write('<textarea name="code" id="code" class="delphi" rows="1" cols="1">');
document.write('TYPE\n   T_NODO_FRUTA	= ^NODO_FRUTA;\n   \n   NODO_FRUTA	= RECORD\n		     nombre : string;\n		     sig    : T_NODO_FRUTA;\n	END;\n\n	\nPROCEDURE INTERCAMBIO_DE_DOS_NODOS(VAR lista, ant, aux, pos : T_NODO_FRUTA);\n{Para ordenar comparamos los nodos de 2 en dos 2, si se cumple la condicion impuesta el algoritmo para intercambiar ambos nodos es siempre este}\n\nBEGIN\n   pos:=aux^.sig;\n   aux^.sig:=aux^.sig^.sig;\n   pos^.sig:=aux;\n   IF aux = lista THEN lista:=pos\n   ELSE ant^.sig:=pos;\nEND; { INTERCAMBIO_DE_DOS_NODOS }\n\nPROCEDURE ORDENA_LISTA(VAR lista_a : T_NODO_FRUTA);\n\nVAR\n   aux, ant, pos : T_NODO_FRUTA;\n   i, cambio, x  : INTEGER; \n\n//Variable cambio nos indicara si se han tenido que intercambiar\n//los ultimos dos nodos computados. Variable x nos indicara cuantos nodos se han //tenido que intercambiar en total al recorrer la lista completa\n   \nBEGIN\n   ant:=NIL; pos:=NIL; aux:=lista_a; x:=0; //inicializamos valores\n\n   IF (aux <> NIL) AND (aux^.sig <> NIL) THEN \n //Si lista_a no tiene nodos o solo tiene\n   BEGIN                                       //uno no hay que hacer nada\n      REPEAT\n	 aux:=lista_a; x:=0; \n //Cada vuelta del bucle REPEAT estas variables deben inicializarse\n\n	    WHILE aux^.sig <> NIL DO //Mientras que aux no llegue al ultimo nodo\n	    BEGIN\n	       cambio:=0; //No se han intercambiado nodos, por tanto, cambio = 0\n	       \n	       IF aux^.nombre >	aux^.sig^.nombre THEN\n	       BEGIN\n		  \n//En cuanto el nodo superior tenga un caracter mayor que el inferior se\n//intercambia los nodos, la sentencia despues del OR se implementa para\n//los casos por ejemplo que titulo = a y titulo.sig = aa\n\n		  INTERCAMBIO_DE_DOS_NODOS(lista_a, ant, aux, pos);\n		  INC(cambio); INC(x); \n//Se produjo un intercambio por tanto incrementamos\n		  BREAK;\n	       END;\n\n		     \n	       IF cambio <> 0 THEN ant:=pos\n	       ELSE BEGIN ant:=aux; aux:=aux^.sig; END;\n	    END; {WHILE} \n//Continuamos hasta que lleguemos al final de lista\n	    \n	 UNTIL\n	 x = 0 \n//Continuamos hasta que nose haya tenido que intercambiar ningun nodo en la lista\n      END; {IF 1}\n      \n   END; {FIN PROCEDURE ORDENA_LISTA}');
document.write('</textarea>');
document.write('<script languaje="javascript" type="text/javascript">');
document.write('dp.SyntaxHighlighter.ClipboardSwf = \'http://www.naslu.com/flash/clipboard.swf\';dp.SyntaxHighlighter.HighlightAll("code");');
document.write('</script>');
document.write('<a href="http://www.naslu.com" style="font-family:Arial;font-size:9px;color:#444444;font-weight:bold;">Powered by naslu.com</a>');