Está en la página 1de 11

Conceptos de

Algoritmos
Datos y Programas

Clase 9-2
CADP – TIPOS DE DATOS - LISTA
Creación de una lista.

Agregar nodos al comienzo de la lista.

Recorrido de una lista.

Agregar nodos al final de la lista.

Insertar nodos en una lista ordenada

Eliminar nodos de una lista


Clase 9-2
CADP – TEMAS

Estructura de Datos - LISTA

Operación de CREACION

Operación de RECORRIDO

Clase 9-2
CADP – TIPOS DE DATOS - LISTA
CREAR UNA LISTA
Implica marcar que la lista no tiene una dirección inicial de
comienzo.
Program uno;

Type listaE= ^datosEnteros;


e l e a s ig n aa
s
Qué valor r a in d ic ar datosEnteros= record
p u nt er o p a elem:integer;
un u n a
tie n e sig:listaE;
que no d a? end;
a si gn a
dirección
Var
pri: listaE; {Memoria estática reservada}

Clase 9-2
CADP – TIPOS DE DATOS - LISTA CREAR
Program uno;

Type listaE= ^datosEnteros;


pri == ???
pri nil
datosEnteros= record
elem:integer;
sig:listaE;
end;

Var
pri: listaE;

Por qué no se hace


Begin new (pri)?
pri:=nil; Se puede
End.
o dula ri za r el
m
crear?
Clase 9-2
CADP – TIPOS DE DATOS - LISTA CREAR
Program uno;

Type listaE= ^datosEnteros;


???
pri = nil
datosEnteros= record
elem:integer;
sig:listaE;
end;
Procedure crear (var p: listaE);
begin
p:= nil;
end;
Var
pri: listaE;

Begin
crear (pri);
Clase 9-2 End.
CADP – TIPOS DE DATOS - LISTA
RECORRER UNA LISTA
Implica posicionarse al comienzo de la lista y a partir de allí ir
“pasando” por cada elemento de la misma hasta llegar al final.

Program uno;

Type listaE= ^datosEnteros;

datosEnteros= record
elem:integer;
sig:listaE;
end;

Var
pri: listaE;
Clase 9-2
CADP – TIPOS DE DATOS - LISTA RECORRER UNA LISTA
Program uno;

Type listaE= ^datosEnteros;


pri = ???
datosEnteros= record pri = nil
elem:integer; pri = ADCD
sig:listaE;
end;
Var ACDD 23 | ADDA
pri: listaE;
ADCD 10 | ACDD
Begin
crear (pri);
cargarLista (pri); //Lo implementaremos más adelante

recorrerLista (pri); ADDA 4 | nil


End.
Clase 9-2
CADP – TIPOS DE DATOS - LISTA RECORRER UNA LISTA

ADCD ACCA ADBA ACDA


4
4 ACCA 25 ADBA 14 ACDA 10 nil 25
14
pri 10
aux

Inicializo una variable auxiliar con la dirección del


puntero inicial de la lista

mientras (no sea el final de la lista)


proceso el elemento (ej: imprimo, sumo, modifico)
avanzo al siguiente elemento de auxiliar
Clase 9-2
CADP – TIPOS DE DATOS - LISTA RECORRER UNA LISTA
ADCD ACCA ADBA ACDA

4 ACCA 25 ADBA 14 ACDA 10 nil

pri

procedure recorrerLista (pI: listaE);


Var
Es correcto?
aux:listaE;

begin
Si la lista está vacía, (aux^.sig) da
aux:= pI;
error.
while (aux^.sig <> nil) do
begin
Si la lista tiene un solo elemento
write (aux^.elem);
(aux^.sig <> nil) da falso.
aux:= aux^.sig;
end;
Si la lista tiene muchos elementos no
end;
imprime el último
Clase 9-2
CADP – TIPOS DE DATOS - LISTA RECORRER UNA LISTA

procedure recorrerLista (pI: listaE);


Var
aux:listaE;
Es necesaria
la variable
begin
aux?
ALTERNATIVA
aux:= pI;
while (aux <> nil) do procedure recorrerLista (pI: listaE);
begin
write (aux^.elem); begin
aux:= aux^.sig; while (pI <> nil) do
end; begin
end; write (pI^.elem);
pI:= pI^.sig;
end;
end;

Clase 9-2

También podría gustarte