Está en la página 1de 15

* Lista Simplemente enlazada.

*
*/
/**
*
* @author Pain
*/
//Clase Nodo. Utiliza el enlace llamado nodoDer o nodo derecho y el valor a
introducir.
public class Nodo {
Nodo nodoDer;
int dato;
public Nodo(int dato) {
this.dato = dato;
this.nodoDer = null;
}
}
/*
* Clase de Lista enlazada y metodos de agregar al inal y !orrar del mismo"
asi como mostrar tama#o y visualizar lista.
*
*/
import javax.swing.JOptionPane;
/**
*
* @author Pain
*/
public class ListaS {
private Nodo primero;
private Nodo !timo;
private int tamano;
public ListaS() {
this.primero = null;
this.!timo = null;
this.tamano = ";
}
//$etodo utilizado para denotar %ue la lista se encuentra vacia.
public boolean si#a$io() {
return (this.primero == null);
}
//$etodo para agregar al inal de la lista.
public ListaS addLast(int dato) {
i%(si#a$io()) {
Nodo nevo = new Nodo(dato);
primero = nevo;
!timo = nevo;
nevo.nodoDer = nevo;
}
e!se {
Nodo nevo = new Nodo(dato);
nevo.nodoDer = null;
!timo.nodoDer = nevo;
!timo = nevo;
}
this.tamano&&;
return this;
}
//$etodo para !orrar al inal de la lista.
public Nodo de!eteLast() {
Nodo e!iminar = null;
i%(si#a$io()) {
JOptionPane.s'ow(essageDia!og(null) *La !ista se en$entra
va$ia*);
return null;
}
i%(primero == !timo) {
primero = null;
!timo = null;
}
e!se {
Nodo a$ta! = primero;
w'i!e(a$ta!.nodoDer += !timo) {
a$ta! = a$ta!.nodoDer;
}
e!iminar = a$ta!.nodoDer;
a$ta!.nodoDer = null;
!timo = a$ta!;
}
this.tamano,,;
return e!iminar;
}
//$etodo %ue imprime el tama#o de la lista.
public void tamano() {
JOptionPane.s'ow(essageDia!og(null) *-! tama.o es/\n * & this.tamano);
}
//$etodo %ue imprime la lista y los valores ingresados.
public void imprimir() {
i%(tamano += ") {
Nodo temp = primero;
String str = **;
%or(int i = "; i 0 this.tamano; i&&) {
str = str & temp.dato & *\n*;
temp = temp.nodoDer;
}
JOptionPane.s'ow(essageDia!og(null) str);
}
}
}
Listas Simples
Una lista simplemente ligada constituye una coleccin de elementos
llamados nodos. El orden entre estos se establece por medio de
punteros; es decir, direcciones o referencias a otros nodos. Un tipo
especial de lista simplemente ligada es la lista vaca. La figura F331 -
1 presenta la estructura de un nodo de una lista simplemente ligada.
En general, un nodo consta de dos partes:
1. Un campo INFORMACION que ser del tipo de los datos que se
quiera almacenar en la lista.
2. Un campo LIGA, de tipo puntero, que se utilia para establecer la
liga o el enlace con otro nodo de la lista. !i el nodo fuera el "ltimo de
la lista, este campo como valor N1LO #vacio#. $l emplearse el
campo liga para relacionar dos, no ser necesario almacenar
fsicamente a los nodos en espacios contiguos.
En la figura F331-2 se presenta un e%emplo de una lista simplemente
ligada que almacena apellidos. El primer nodo de la lista es apuntado
por una variable P, de tipo apuntador P almacena la direccin del
primer nodo. El campo liga del "ltimo nodo de la tiene un valor
N1LO, que indica que dic&o nodo no apunta a ning"n otro. El
apuntador al inicio de la lista es importante porque permite
posicionarnos en el primer nodo de la misma y tener acceso al resto
de los elementos. !i, por alguna ran, este apuntador se e'traviara,
entonces perderemos toda la informacin almacenada en la lista. (or
otra parte, si la lista simplemente ligada estuviera vaca, entonces el
apuntador al tendr el valor N1LO.
Operaciones con listas simplemente ligadas
Las operaciones que pueden efectuarse en una lista simplemente
ligada son:
1. Recorrido de la lista.
2. Insercin de un elemento.
3. Borrado de un elemento.
4. Bsqueda de un elemento.
$ntes de analiar cada una de estas operaciones, se presentara un
algoritmo que permite crear una lista simplemente ligada, al incorporar
cada nuevo nodo al inicio.
Crea_Inicio
{Este aloritmo permite crear una lista simplemente liada, areando cada nue!o nodo al
inicio de la misma"
{P # $ son !aria%les de tipo puntero. &os campos del nodo son I'(), que ser* del tipo de
datos que se quiera almacenar en la lista, # &I+, de tipo apuntador. P apunta al inicio de
la lista. RE- es una !aria%le de tipo entero"
). *rear .P/ {-e crea el primer nodo de la lista simplemente liada"
+. Leer (,.-./0
1. 2acer (,.L-3$ 0, .UL0
4. Escribir 567esea ingresar ms nodos a la lista8 !i: ), .o: 9:
;. Leer <E!
=. >ientras ?<E! = )@ Repetir
*rear .$/
Leer A,.-./0
2acer A,.L-3$ 0, P y P &' $
Escribir 567esea ingresar ms nodos a la lista8 !i: ), .o: 9:
Leer <E!
B. {(in del ciclo del paso 0"
Crea_final
{Este aloritmo permite crear una lista simplemente liada, areando cada nue!o 1inal de
la misma"
{P, $ # 2 son !aria%les de tipo apuntador. &os campos del nodo son I'(), que ser* del
tipo de datos que se quiera almacenar en la lista, # &I+, de tipo apuntador. P apunta al
inicio de lista. RE- es una !aria%le de tipo entero"
*rear .P/ {-e crea el primer nodo de la lista/
Leer (,.-./0
2acer (,.L-3$ 0, N1LO y C 0, (
Escribir 567esea ingresar mas nodos a la lista8 !i: ), .o: 9:
Leer <E!
3ientras ?<E! = )@ Repetir
*rear .$/
Leer A,.-./0
2acer A,.L-3$ 0, N1LO, C,.L-3$ 0, $ # C0, $ D C apunta al
"ltimo nodoE
Escribir 567esea ingresar ms nodos a la lista8 ! F ), .o F 9G
Leer <E!
B. {(in del ciclo del paso 0"
Recorrido de una lista simplemente ligada
La operacin de recorrido en una lista simplemente ligada consiste en
visitar cada uno de los nodos que forman la lista. La visita puede
implicar una operacin simple; por e%emplo, imprimir la informacin del
nodo, o una comple%a, dependiendo del problema que se intente
resolver.
(ara recorrer todos los nodos de una lista simplemente ligada se
comiena con el primero. !e toma el valor del campo L-3$ de Hste y
se avana al segundo, y as sucesivamente &asta llegar al "ltimo
nodo, cuyo campo &I+, tiene el valor N1LO. En general, la direccin
de un nodo, e'cepto el primero, est dada por el campo L-3$ de su
predecesor.
Recorre_Iteratio !"#
{4ste aloritmo recorre una lista cu#o primer nodo esta apuntado por P"
{$ es una !aria%le de tipo apuntador. I'() # &I+, son los campos de cada nodo de la
lista"
). 2acer A 0, (
+. >ientras ?A 5 .UL0@ Repetir
Escribir A,.-./0
2acer $ 0, A,.L-3$ {,punta al siuiente nodo de la lista"
1. {(in del ciclo del paso 2"
Las listas se pueden mane6ar 1*cilmente con procesos recursi!os. El
algoritmo siguiente constituye una versin recursiva para recorrer una
lista simplemente ligada.
Recorre_recursio !F#
{Este aloritmo recorre una lista simplemente liada en 1orma recursi!a. P es un apuntador
al nodo que se !a a !isitar. &a primera !e7 trae la direccin del primer nodo de la lista"
{I'() # &I+, son los campos de cada nodo de la lista"
). -i P ( .UL0 entonces
Escribir (,.-./0
Llamar a <ecorreIrecursivo con (,.L-3$ {&lamada recursi!a con el
apuntador al siuiente nodo de la lista"
+, {(in del condicional del paso 1"
Inserci$n en listas simplemente ligadas
La operacin de insercin en listas simplemente ligadas consiste en
agregar un nuevo nodo a la lista. !in embargo, dependiendo de la
posicin en la que se deba insertar el nodo, se pueden presentar
diferentes casos, como los que se seJalan a continuacin
Insertar un nodo al inicio de la lista.
Insertar un nodo al 1inal de la lista.
Insertar un nodo antes que otro cu#a in1ormacin es 8.
Insertar un nodo despu9s que otro cu#a in1ormacin es 8.
!iendo evaluados los dos primeros, por ser los ms comunes.
a# Inserci$n al inicio de una lista simplemente ligada
Inserta_Inicio!", %&'O#
{Este aloritmo inserta al inicio de una lista simplemente liada. P es el apuntador al
primer nodo de la misma, # :,2) es la in1ormacin que se almacenar* en el nue!o nodo"
{$ es una !aria%le de tipo apuntador, I'() # &I+, son los campos de cada nodo de la
lista"
). *rea ?A@
+. 2acer A,.-./0 0, 7$C0, A,.L-3$ 0, ( y ( 0, A

(# Inserci$n al final de una lista simplemente ligada
Inserta_Final!", %&'O#
Este aloritmo inserta un nodo al 1inal de una lista simplemente lia. P es el apuntador al
primer nodo de la lista, # :,2) es la in1ormacin que se almacenar* en el nue!o nodo"
{$ # 2 son !aria%les de tipo apuntador, I'() # &I+, son los campos de cada nodo de la
lista"
). 2acer C 0, (
+. >ientras ? C,.L-3$ 2 .UL0 @ repetir
{Recorre la lista ;asta llear al ltimo elemento"
2acer C 0, C,.L-3$
1. {(in del ciclo del paso 2"
4. *rea ?A@
+. 2acer A,.-./0 0, 7$C0, A,.L-3$ 0, .UL0 y C,.L-3$ 0, A
)liminaci$n en listas simplemente ligadas
La operacin de eliminacin en las listas simplemente ligadas
consiste en eliminar un nodo de la lista y liberar el espacio de memoria
correspondiente. 7ependiendo de la posicin en la que Hste se
encuentre, se pueden presentar diferentes casos, como los que se
seJalan a continuacin:
Eliminar el primer nodo.
Eliminar el ltimo nodo.
Eliminar un nodo con in1ormacin 8
Eliminar el nodo anterior al nodo con in1ormacin 8
Eliminar el nodo posterior al nodo con in1ormacin 8
*abe destacar que en los algoritmos que se presentarn a
continuacin no se considera que la lista estH vaca. Esta condicin se
puede evaluar fcilmente al inicio del algoritmo o bien en el programa
principal.
(or ser los ms comunes, se evaluaran los primeros tres algoritmos.
)liminar el primer nodo de la lista simplemente ligada.
)limina_Inicio!"#
{Este aloritmo permite eliminar el primer elemento de una lista simplemente liada. P es
el apuntador al primer elemento de la lista" {$ es una !aria%le de tipo a puntador, I'() #
&I+, son los campos de los nodos de la lista"
). 2acer A KL (
{-i la lista tu!iera slo un elemento entonces a P se le asinar<a '=&), que es el !alor
de $>.&I+,. En caso contrario, queda con la direccin del siuiente elemento"
+. 2acer ( KL A,.L-3$ {Rede1ine el puntero al inicio de la lista"
1. Auitar?A@
)limina el *ltimo nodo de la lista simplemente ligada
)limina_+ltimo!"#
{Este aloritmo elimina el ltimo nodo de la una lista simplemente liada. P es el apuntador
al primer nodo de la lista"
{$ # P son !aria%les de tipo apuntador. I'() # &I+, son los campos de los nodos de la
lista"
). 2acer A 0, (
+. !i ?(,.L-3$ F .UL0@ {-e !eri1ica si la lista tiene slo un nodo"
entonces
2acer ( 0, .UL0
si no
+.+. >ientras ?A,.L-3$ M .UL0@ repetir
2acer C 0, A y A 0, A,.L-3$
2.3. {(in del ciclo del paso 2.1"
1. {(in del condicionante del paso 2"
4. Auitar?A@
)liminar un nodo con informaci$n , de una lista simplemente
ligada
)limina_,
{Este aloritmo permite elimina un nodo con in1ormacin 8 de una lista simplemente
liada. P es el apuntador al primer nodo de la lista"
{$ # 2 son !aria%les de tipo apuntador. B,': es una !aria%le de tipo entero. I'() # &I+,
son los campos de los nodos de la lista"
). 2acer A 0, ( y N$.7 0, )
+. >ientras ??A,.-./0 2 O @ y ?N$.7 = )@@ repetir
+.) si A,.L-3$ 2 .UL0
entonces
?acer 2 &' $ # $ &' $>.&I+,
si no
?acer B,': &' @
+.+ {(in del condicionante del paso 2.1"
1. {(in del ciclo del paso 2"
4. !i ?N$.7 = 9@
entonces
Escribir 5El elemento con informacin O no se encuentra en
la lista:
si no
4.) !i ?( = A@ {-e !eri1ica si el elemento a eliminar es el primero"
Entonces
2acer ( 0, A,.L-3$
si no
2acer C,.L-3$ 0, A,.L-3$
4.+ {(in del condicional del paso 4.1"
Auitar ?A@
;. {(in del condicional del paso 4"
-*s.ueda en listas simplemente ligadas
La operacin de b"squedas de un elemento en una lista simplemente
ligada es muy fcil de realiar, aunque infidente ya que se lleva a cabo
de forma secuencial. !e debe ir recorriendo los nodos &asta encontrar
el que estamos buscando o &asta que se llegue al final de la lista. El
algoritmo es similar a los que se desarrollaron para recorrer una lista
en forma iterativa o recursiva.
$l igual que en el caso de las operaciones vistas anteriormente,
e'isten deficiencias en los algoritmos si las listas se encuentran
ordenadas o desordenadas. !e comenar, en primer tHrmino, con el
algoritmo de b"squeda par listas simplemente ligadas que se
encuentran desordenadas.
N"squedaI7esordenada?(,O@
DEste algoritmo permite buscar el elemento con la informacin O en
una lista simplemente ligada que se encuentra desordenada. ( es una
variable de tipo apuntador, seJalando al primer nodoE
DA es una variable tipo apuntador. -./0 y L-3$ son campos de los
nodos de la listaE
). 2acer A 0, (
+. >ientras ??A 2 .UL0@ y ?A,.-./0 2 O@@ repetir
2acer A 0, A,.L-3$
1. {(in del ciclo del paso 2"
4. !i ?A = .UL0@
entonces
Escribir 5El elemento no se encuentra en la lista:
si no
Escribir 5El elemento si se encuentra en la lista:
;. {(in del condicionante del paso 4"

Es importante destacar que con una simple modificacin en la
codificacin del ciclo del paso + se adapte este algoritmo para la
b"squeda de elementos en la lista simplemente ligada que se
encuentran ordenados. $ continuacin se presentan el algoritmo de
b"squeda en listas simplemente ligadas ordenadas en forma
ascendente.
N"squedaI0rdenada?(,O@
{Este aloritmo permite %uscar el elemento con la in1ormacin 8 en una lista simplemente
liada que se encuentra ordenada de 1orma ascendente. P es una !aria%le de tipo
apuntador, seAalando al primer nodo"
{$ es una !aria%le tipo apuntador. I'() # &I+, son campos de los nodos de la lista"
). 2acer A 0, (
+. >ientras ??A 2 .UL0@ y ?A,.-./0 0 O@@ repetir
2acer A 0, A,.L-3$
1. {(in del ciclo del paso 2"
4. !i ??A = .UL0@ o ?A,.-./0 3 O@@
entonces
Escribir 5El elemento no se encuentra en la lista:
si no
Escribir 5El elemento si se encuentra en la lista:
;. {(in del condicionante del paso 4"
2odos los aloritmos presentados tanto en la b"squeda, insercin y
eliminacin se pueden implementar de 1orma recursi!a. $ continuacin
se muestra una versin recursiva del algoritmo de b"squeda
desordenada.
NusquedaI<ecursiva?(,O@
DEste algoritmo permite buscar recursivamente a un elemento con
informacin O en una lista simplemente ligada que se encuentre
desordenad. ( es el apuntador al primer nodo de la listaE
). !i ?( 2 .UL0@
entonces
).) !i ?(,.-./0 = O@
entonces
Escribimos 5El elemento se encuentra en la lista:
si no
Llamar a NusquedaI<ecursivo con (,.L-3$ y O
).+ {(in del condicionante del paso 1.1"
si no
Escribir 5El elemento no se encuentra en la listaG;
+. {(in del condicionante del paso 1"
Listas ligadas
En las secciones anteriores se contemplaron diferentes estructuras estticas en dnde la
manipulacin de datos es a travs de posiciones localizadas secuencialmente. Para de
clarar estas estructuras se deba definir un tamao determinado el cual no poda
modificarse posteriormente. Esto puede ser un problema en el caso de que:
no sepamos de antemano el tamao requerido para nuestra aplicacin
hay una ran cantidad de operaciones y manipulaciones de los datos dentro de
las estructuras
En estos casos es eneralmente m!a acute"s conveniente utilizar estructuras dinmicas#
es decir# las cuales pueden aumentar o disminuir de tamao de acuerdo a los
requerimientos especficos del procedimiento. $s se resuelve el problema de no saber
el tama!ntild e"o e%acto desde un principio y las manipulaciones de datos se pueden
hacer de una manera mas rpida y eficiente.
&na lista liada es entonces un rupo de datos oranizados secuencialmente# pero a
diferencia de los arrelos# la oranizacin no esta dada implcitamente por su posicin
en el arrelo. En una lista liada cada elemento es un nodo que contiene el dato y
adems una liga al siuiente dato. Estas lias son simplemente variables que contienen
la's( direccin'es( de los datos contiuos o relacionados.
Para mane)ar una lista es necesario contar con un apuntador al primer elemento de la
lista "head" .
*as venta)as de las listas liadas son que:
Permiten que sus tamaos cambien durante la e)ecucin del prorama
Proveen una ma)or fle%ibilidad en el mane)o de los datos.
Este principio de listas liadas se puede aplicar a cualquiera de los conceptos de
estructura de datos vistos anteriormente: arrelos# colas y pilas . Es decir# las
operaciones de altas# ba)as y cambios# as como b+squedas y ordenamientos se tendrn
que adaptar en la cuestin del mane)o de localidades +nicamente.

Listas ligadas sencillas
&na lista liada sencilla es un rupo de datos en dnde cada dato contiene adems un
apuntador hacia el siuiente dato en la lista# es decir# una liga hacia el siuiente dato.
*os siuientes aloritmos fueron tomados de ,Estructuras de -atos,# .air / 0uardati#
1a. Ed.# 2c0ra3 4ill# 1551.
4!goritmo 5.6
78-49N979O(P)
{-ste a!goritmo $rea na !ista) agregando $ada nevo nodo a! ini$io de
!a misma}
{ P : ; son varia<!es de tipo pntero. P apntar= a! ini$io de !a
!ista}
6. 78-4 (P) {7rea e! primer nodo de !a !ista}
>. Leer P,39N?O8(479@N
A. Ba$er P,3L9C4=N9L
D. 8epetir
78-4 (;)
Leer ;,39N?O8(479@N
Ba$er ;,3L9C4= P : P = ;
5. Basta (Ee :a no 'a:a in%orma$iFn)
4!goritmo 5.>
78-4?9N4L(P)
{-ste a!goritmo $rea na !ista) agregando $ada nevo nodo a! %ina! de
!a misma}
{P : ; son varia<!es de tipo pntero. P apntar= a! ini$io de !a
!ista}
6. 78-4 (P) {7rea e! primer nodo de !a !ista}
>. Leer P,39N?O8(479@N
A. Ba$er P,3L9C4=N9L : G=P
D. 8epetir
78-4 (;)
Leer ;,39N?O8(479@N
Ba$er ;,3L9C4=N9L) G,3L9C4=; : G=;
5. Basta (Ee :a no 'a:a in%orma$iFn)
Para poder dar de alta un dato en una lista liada sencilla es necesario recorrer la lista
nodo por nodo hasta encontrar la posicin adecuada. 6e crea un nuevo nodo# se inserta
el dato y se actualizan las lias del nodo nuevo y del anterior para intercalar el nuevo
nodo en la lista.
4!goritmo 5.A
8-7O88-9G-84G9#O(P)
{-ste a!goritmo re$orre na !ista $:o primer nodo est= apntado por
P}
{; es na varia<!e de tipo pntero}
6. Ba$er ; = P
>. 8epetir mientras ; =+ N9L
-s$ri<ir ;,39N?O8(471@N
Ba$er ;=;,3L9C4 {4pnta a! sigiente nodo de !a !ista}
A. {?in de! $i$!o de! paso >}
4!goritmo 5.D
8-7O88-718S9#O(P)
{-ste a!goritmo re$orre na !ista re$rsivamente. P es e! apntador
a! nodo a visitar}
6. Si P =+ N9L enton$es
-s$ri<ir P,39N?O8(479@N
L!amar a 8-7O88-718S9#O $on P,3L9C4
{L!amada re$rsiva $on e! apntador a! sigiente nodo
de !a !ista}
>. {?in de! $ondi$iona! de! paso 6}
4!goritmo 5.H
9NS-8G4?9N4L(P)
{-ste a!goritmo inserta n nodo a! %ina! de !a !ista. P es e!
apntador a! primer nodo
de !a !ista) : D4GO es !a in%orma$iFn Ee se a!ma$enar= en e! nevo
nodo}
{; : G son varia<!es de tipo pntero}
6. Ba$er G= P
>. 8epetir mientras G ,3Liga =+ N9L
{8e$orre !a !ista 'asta !!egar a! I!timo e!emento}
Ba$er G=G,3L9C4
A. {?in de! $i$!o de! paso >}
D. 78-4 (;)
5. Ba$er ;,39N?O8(479@N =D4GO) ;,3L9C4 =N9L : G ,3L9C4 =;
4!goritmo 5.J
9NS-8G4NG-S ( P) D4GO) 8-? )
{-ste a!goritmo inserta n nodo dado $omo re%eren$ia) 8-?. P es e!
apntador a!
primer nodo de !a !ista) : D4GO es !a in%orma$iFn Ee se a!ma$enar= en
e! nevo nodo}
{;) K : G son varia<!es de tipo pntero) L4ND es na varia<!e de tipo
<oo!eano}
6. Ba$er ;= P : L4ND= #-8D4D-8O
>. 8epetir mientras (;,39N?O8(479@N =+ 8-?) : (L4ND =
#-8D4D-8O)
>.6 Si ; ,3 L9C4 =+ N9L
-nton$es
Ba$er G= ; : ;= ;,3 L9C4
Si no
Ba$er L4ND = ?4LSO
>.> {?in de! $ondi$iona! de! paso >.6}
A. {?in de! $i$!o de! paso >}
D. Si L4ND = #-8D4D-8O enton$es
78-4(K)
Ba$er K,39N?O8(479@N = D4GO
D.6 Si P = ; {-s e! primer nodo}
-nton$es
Ba$er K ,3L9C4 = P : P = K
Si no
Ba$er G ,3L9C4 =K : K ,3L9C4 = ;
D.> {?in de! $ondi$iona! de! paso D.6}
5. {?in de! $ondi$iona! de! paso D}
4!goritmo 5.M
-L9(9N4P89(-8O(P)
{-ste a!goritmo <orra e! primer e!emento de na !ista. P es e!
apntador a! primer nodo de !a !ista}
{; es na varia<!e de tipo pntero}
6. Ba$er ; = P
>. Si ; ,3 L9C4 =+ N9L {#eri%i$a si !a !ista tiene sF!o n
nodo}
-nton$es
Ba$er P= ;,3 L9C4 {8ede%ine e! pntero a!
ini$io}
Si no
Ba$er P = N9L
A. {?in de! $ondi$iona! de! paso>}
D. ;19G4(;)
4!goritmo 5.6"
-L9(9N4NLG9(O(P)
{-ste a!goritmo <orra e! I!timo e!emento de na !ista. P es e!
apntador a! primer nodo de !a !ista}
{; : G son varia<!es de tipo pntero}
6. Si P ,3 L9C4 = N9L {#eri%i$a si !a !ista tiene sF!o n
e!emento}
-nton$es
;19G4(P)
Ba$er P = N9L
Si no
Ba$er ; = P
6.6 8epetir mientras ( ;,3L9C4 =+ N9L)
Ba$er G=; : ; = ; ,3 L9C4
6.> {?in de! $i$!o de! paso 6.6}
Ba$er G ,3 L9C4 = N9L
;19G4(;)
>. {?in de! $ondi$iona! de! paso 6}
4!goritmo 5.66
-L9(9N4K( P) K )
{-ste a!goritmo e!imina n nodo $on in%orma$iFn K de na !ista. P es
e! apntador a! primer nodo de !a !ista}
{; : G son varia<!es de tipo pntero. L4ND es na varia<!e de tipo
<oo!eano}
6. Ba$er ; = P : L4ND= #-8D4D-8O
>. 8epetir mientras (;,39N?O8(479@N =+ K) : (L4ND =
#-8D4D-8O)
>.6 Si ; ,3L9C4 =+ N9L
-nton$es
Ba$er G = ; : ; = ; ,3 L9C4
Si no
Ba$er L4ND = ?4LSO
>.> {?in de! $ondi$iona! de! paso >.6}
A. {?in de! $i$!o de! paso >}
D. Si L4ND = ?4LSO
-nton$es
-s$ri<ir O-! e!emento no %e en$ontradoO
Si no
D.6 S9 P = ; {#eri%i$a si e! e!emento a e!iminar
es e! primero}
-nton$es
Ba$er P = ;,3L9C4
Si no
Ba$er G ,3 L9C4=;,3 L9C4
D.> {?in de! $ondi$iona! de! paso D.6}
;19G4(;)
5. {?in de! $ondi$iona! de! paso D}
4!goritmo 5.65
L1S7488-718S9#O(P)K)
{-ste a!goritmo <s$a re$rsivamente a! e!emento $on in%orma$iFn K en
na !ista Ee se en$entra desordenada. P es e! apntador de! nodo a
visitar}
6. Si ( P =+ N9L)
-nton$es
6.6 Si ( P ,39N?O8(479@N = K )
-nton$es
-s$ri<ir P-! e!emento se en$entra en !a
!istaO
Si no
L!amar a L1S7488-718S9#O $on P ,3 L9C4
: K
6.> {?in de! $ondi$iona! de! paso 6.6}
Si no
-s$ri<ir P-! e!emento no se en$entra en
!a !istaO
>. {?in de! $ondi$iona! de! paso 6}

También podría gustarte