Pascal/Turbo Pascal - Ordenar lista

   
Vista:

Ordenar lista

Publicado por Mateo (6 intervenciones) el 21/11/2015 20:15:47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
type
 
    RangoCodigo =  1..LARGO_CODIGO;
    RangoBR = 0 .. LARGO_CODIGO;
    TipoCodigo = array [RangoCodigo] of char;
    TRegistroNota = record
		       codigo : TipoCodigo;
		       buenos,
		       regulares: RangoBR;
    end;
 
    THistoria  = record
		    info : array [1..MAXIMO_INTENTOS] of TRegistroNota;
		    tope : 0..MAXIMO_INTENTOS;
    end;
 
    ListaNotas = ^CeldaNota;
    CeldaNota = record
         codigo    : TipoCodigo;
         buenos    ,
         regulares : RangoBR;
         turno     : 1 .. MAXIMO_INTENTOS;
         siguiente : ListaNotas;
     end;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function ListaOrdenada(historia : THistoria) : ListaNotas;
 
 
	function InsertarElemento(historia: THistoria; r: ListaNotas; var i: integer): ListaNotas;
	var
		p,q			: ListaNotas;
		j,limite	: integer;
	begin
		InsertarElemento:=r;
		new(p);
		limite:=historia.tope;
		for j:=1 to limite do
			p^.codigo:=historia.info[i].codigo;
			p^.buenos:=historia.info[i].buenos;
			p^.regulares:=historia.info[i].regulares;
			p^.turno:=i;
			p^.siguiente:=nil;
			inc(i);
				if r = nil then
					r:= p
				else
					begin
						q:= r;
						while q^.siguiente <> nil do
							q:= q^.siguiente;
						q^.siguiente:= p;
					end;
			end;
var
	lista				: ListaNotas;
	i,k,limite		: integer;
 
begin
	{ aproximacion:= 10 * (buenos + regulares); }
	limite:=historia.tope;
	new(lista);
	if limite = 0 then	{lista vacia}
		lista := nil;
	k:=1;
	for i:=1 to limite do
 		InsertarElemento(historia,lista,k);
		inc(k);
 
	ListaOrdenada:=lista;
end;


no logro tener una idea para ordenar la lista y quede quede asi

(lista vacia)Impresion de historia
---------------------
FBCD--> buenos : 2 regulares : 0
CDBB--> buenos : 1 regulares : 1
DEBE--> buenos : 2 regulares : 1
DCEC--> buenos : 2 regulares : 1
EEAB--> buenos : 0 regulares : 3
-*-*-*-*-*-*-*-*-*-*-
Imprimir lista
--------------
EEAB --> Bs = 0, Rs = 3 ( turno: 5)
CDBB --> Bs = 1, Rs = 1 ( turno: 2)
FBCD --> Bs = 2, Rs = 0 ( turno: 1)
DEBE --> Bs = 2, Rs = 1 ( turno: 3)
DCEC --> Bs = 2, Rs = 1 ( turno: 4)

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder