Professional Documents
Culture Documents
Listas
Ejercicio 1
Leer
una
secuencia
de
nmeros
Analizando el problema
Supongamos que llegan los nmeros:
22,
11,
15,
3, -1
P
ri
P
ri
15
11
Pri
P
=
ri NlL
la lista
Inicialmente
ntra
Pri se encue
vaca
22
NIL
Solucin
propuesta
Program uno;
{TIPOS DEFINIDOS POR EL USUARIO}
type
lista = ^nodo;
nodo = record
dato: integer;
sig : lista;
end;
{PROCEDIMIENTOS Y FUNCIONES}
procedure agregarAdelante(var pri:lista;
num:integer);
var
aux: lista;
begin
new (aux); {creo el nodo}
aux^.dato := num; {cargo el dato}
aux^.sig := pri; {engancho}
pri := aux; {actualizo el primero}
end;
Solucin
propuesta
procedure imprimir (l: lista);
begin
writeln('---------- LISTADO ----------');
while (l <> nil ) do begin
writeln ('Numero: ', l^.dato);
l := l^.sig;
{avanzo}
end;
end;
Ejercicio 3
Se dispone de una lista de empleados. De cada
empleado se conoce dni y categora (1..5).
Adems se dispone de una tabla donde por cada
categora se tiene el sueldo bsico.
Se pide recorrer la lista e informar para cada dni
cual es el sueldo bsico a cobrar.
Solucin
propuesta
Program uno;
{TIPOS DEFINIDOS POR EL USUARIO}
Type
tipoCat = 1..5;
tipoSueldoB = array[tipoCat] of real;
listaEmp = ^nodoEmp;
nodoEmp = record
dni: integer;
cat: tipoCat;
sig : listaEmp;
end;
//se dispone
procesarEmpleados(lEmp, suel);
end.
Solucin
propuesta
{avanzo}
Ejercicio 4
Se dispone de una lista de alumnos que se
presentaron a una mesa de final de la materia x.
De cada alumno se conoce: nro de alumno y nota.
Se pide recorrer la lista y generar dos listas nuevas,
una con los alumnos aprobados y otra con los
desaprobados.
Solucin
propuesta
Program uno;
{TIPOS DEFINIDOS POR EL USUARIO}
Type
tipoNota: 1..10;
alumno = record
nro: integer;
nota: tipoNota;
End;
listaAlu = ^nodoAlu;
nodoAlu = record
alu: alumno;
sig : listaAlu;
end;
//se dispone
lAluAp:= nil;
lAluDes:= nil;
procesarAlumnos(lAlu, lAluAp,
lAluDes);
end.
Solucin
propuesta
{avanzo}
PREGUNTAS?