Está en la página 1de 16

Conceptos de

Algoritmos
Datos y Programas

Clase 9-3
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

Operación de AGREGAR ADELANTE

Operación de AGREGAR AL FINAL

Clase 9-2
CADP – TIPOS DE DATOS - LISTA
AGREGAR ADELANTE
Implica generar un nuevo nodo y agregarlo como primer elemento
de la lista.
48 nil
pri = nil
nuevo
pri

pri <> nil


167 nil 48 nil
nuevo Cómo
lo
pri escribo
?
32 nil 167 48 nil
nuevo
Clase 9-3
pri
CADP – TIPOS DE DATOS - LISTA AGREGAR ADELANTE
Implica generar un nuevo nodo y agregarlo como primer elemento de la
lista.

Reservo espacio en memoria nuevo elemento.

si (es el primer elemento a agregar)


asigno al puntero inicial la dirección del nuevo elemento.

sino
indico que el siguiente de nuevo elemento es el puntero inicial.
actualizo el puntero inicial de la lista con la dirección del nuevo
elemento.

Clase 9-3
CADP – TIPOS DE DATOS - LISTA AGREGAR ADELANTE
Program uno;

Type listaE= ^datosEnteros;


pri
pri== =ADCD
pri ???
nil
ACDD
datosEnteros= record
elem:integer;
num==7???
num 15
sig:listaE;
end;
Var ACDD 15 | ADCD
pri: listaE;
num:integer; ADCD 7 | nil
Begin
crear (pri);
read (num);
agregarAdelante (pri,num);
ADDA
read (num);
agregarAdelante (pri,num);
Clase 9-3
CADP – TIPOS DE DATOS - LISTA AGREGAR ADELANTE

procedure agregarAdelante (var pI:listaE; num:integer);


Var
es p ac i o p ara e l
nuevo:listaE; Creo ento
nuevo elem
Begin
new (nuevo); nuevo^.elem:= num; nuevo^.sig:=nil;
if (pI = nil) then pI:= nuevo
else begin
Evalúo el caso y
nuevo^.sig:= pI;
reasigno los
pI:=nuevo; punteros
end;
End;

Clase 9-3
CADP – TIPOS DE DATOS - LISTA
AGREGAR AL FINAL
Implica generar un nuevo nodo y agregarlo como último elemento
de la lista.
48 nil
pri = nil nuevo
pri
pri <> nil Cómo
lo
escribo
48 nil 167 nil
?

pri nuevo
pri

48 167 nil 32 nil


Clase 9-3
aux nuevo
CADP – TIPOS DE DATOS - LISTA AGREGAR AL FINAL
Implica generar un nuevo nodo y agregarlo como último elemento de la
lista.

Reservo espacio en memoria nuevo elemento.

si (es el primer elemento a agregar)


asigno al puntero inicial la dirección del nuevo elemento.

sino
inicializo un puntero auxiliar aux
mientras (no llegue al último elemento)
avanzo en la lista.
actualizo como siguiente del último nodo al nuevo elemento

Clase 9-3
CADP – TIPOS DE DATOS - LISTA AGREGAR AL FINAL
Program uno;

Type listaE= ^datosEnteros;


pri
pri= =ADCD
???
nil
datosEnteros= record
elem:integer; num
num == ??
715
sig:listaE;
end;
Var ACDD 15 | nil
pri: listaE;
num:integer; ADCD 7 7| |ACDD
nil
Begin
crear (pri);
read (num);
agregarAlFinal (pri,num);
ADDA
read (num);
agregarAlFinal (pri,num);
Clase 9-3
CADP – TIPOS DE DATOS - LISTA AGREGAR AL FINAL
procedure agregarAlFinal (var pI:listaE; num:integer);
Var
fin a l p o r q u é P o r q ué e n la
nuevo,aux:listaE; Si agrego al e l d e l w hile
f er e n c ia c o nd ic ió n
paso por re a po r el
in i c i a l? s e p r e gu n t
Begin puntero
a u x ^ .sig?
new (nuevo); nuevo^.elem:= num; nuevo^.sig:=nil;
if (pI = nil) then pI:= nuevo Evalúo si la lista está vacía
else begin
aux:= pI;
while (aux ^.sig <> nil) do Recorro y quedo
aux:= aux^.sig; parado en el último
elemento
aux^.sig:=nuevo; Le indico al último que ahora
end; su siguiente es nuevo
End;
Clase 9-3
CADP – TIPOS DE DATOS - LISTA
AGREGAR AL FINAL EN UNA LISTA (OPCION 2)

pri

48 167 23 12 nil
. . .
aux

Cada vez que debo agregar un nuevo


elemento al final de la lista, se tiene
que recorrer la misma de manera
o l o
Cóm o?
completa hasta llegar al final. 32 nil
SE PUEDE MEJORAR?
c ri b
Clase 9-3
es nuevo
CADP – TIPOS DE DATOS - LISTA AGREGAR AL FINAL – 2

pri = nil
48 nil
nuevo
pri
ult
pri
pri <> nil ult

48 nil 167 nil


nuevo
pri ult o l o
Cóm o?
48 12 nil c r ib
167 nil
es
nuevo
Clase 9-3
CADP – TIPOS DE DATOS - LISTA AGREGAR AL FINAL – 2

AGREGAR AL FINAL EN UNA LISTA (OPCION 2)


Implica generar un nuevo nodo y agregarlo como último elemento de la lista.

Reservo espacio en memoria nuevo elemento.

si (es el primer elemento a agregar)


asigno al puntero inicial la dirección del nuevo elemento.
asigno al puntero final la dirección del nuevo elemento.

sino
actualizo como siguiente del puntero final al nuevo elemento
actualizo el la dirección del puntero final

Clase 9-3
CADP – TIPOS DE DATOS - LISTA AGREGAR AL FINAL -2
Program uno;

Type listaE= ^datosEnteros;


pripri= =ADCD
nil
???
datosEnteros= record ult ADCD
ult == ???
nil
ACDD
elem:integer;
num
num==7
??
15
sig:listaE;
end;
Var ACDD 15 | nil
pri,ult: listaE;
num:integer; ADCD 7 7| |ACDD
nil
Begin
crear (pri,ult);
read (num);
agregarAlFinal2 (pri,ult,num);
ADDA
read (num);
agregarAlFinal2 (pri,,ult,num);
Clase 9-3
CADP – TIPOS DE DATOS - LISTA AGREGAR AL FINAL-2
procedure agregarAlFinal2 (var pI,pU:listaE; num:integer);
Var
nuevo:listaE;

Begin
new (nuevo); nuevo^.elem:= num; nuevo^.sig:=nil;
if (pI = nil) then begin
pI:= nuevo; Evalúo si la lista está vacía
pU:= nuevo;
end
else begin
pU^.sig:=nuevo;
pU:= nuevo; Actualizo el siguiente del
end; último nodo y al último nodo

Clase 9-3
End;

También podría gustarte