Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Enlazadas
Listas.
Definicin:
Una lista es una coleccin de elementos llamados
generalmente nodos. El orden entre los nodos se establece por medio
de punteros, es decir, direcciones o referencias a otros nodos.
Estructura de un nodo.
Informacin Liga
NIL
Clasificacin de Listas.
Una listas se pueden clasificar en :
a) Simples.
b) Dobles.
c) Circulares.
d) Multilistas.
Lista Simplemente enlazada
Definicin:
Una lista de enlace simple es una lista enlazada de nodos,
donde cada nodo tiene un nico campo de enlace. Una variable de
referencia contiene una referencia al primer nodo, cada nodo (excepto
el ltimo) enlaza con el nodo siguiente, y el enlace del ltimo nodo
contiene null para indicar el final de la lista. Aunque normalmente a la
variable de referencia se la suele llamar top, usted puede elegir el
nombre que quiera. La siguiente figura presenta una lista de enlace
simple de tres nodos, donde top referencia al nodo A, A conecta con B y
B conecta con C y C es el nodo final. Por ejemplo:
Top A B C
NIL
Lista Simplemente enlazada.
Operacin de Creacin.
Permite crear un nodo al inicio de la lista, y posteriormente se
podrn agregar mas nodo a la misma. Para la creacin de esta puede
presentarse de la siguiente manera.
1. Creacin al inicio.
2. Creacin al final.
CreaInicio( P)
{ Este algoritmo crea una lista, agregando cada nuevo nodo al inicio de la misma}
1.- Crea ( P)
2.- Leer P^Informacion
3.- Hacer P^Liga Nil
4.- Repetir
5.- Crea ( Q )
6.- Leer Q^Informacion
7.- Hacer Q^Liga P,P Q
8.- Hasta( que ya no haya informacin )
Lista Simplemente enlazada.
CreaFinal( P)
{ Este algoritmo crea una lista, agregando cada nuevo nodo al final de la misma}
1.- Crea ( P)
2.- Leer P^Informacion
3.- Hacer P^Liga Nil y T P
4.- Repetir
5.- Crea ( Q )
6.- Leer Q^Informacion
7.- Hacer Q^Liga Nil, T^Liga Q y T Q
8.- Hasta( que ya no haya informacin )
Lista Simplemente enlazada.
Operacin de Insercin.
La operacin de insercin consiste en agregar un nuevo nodo
a la lista. No se considerar el caso de lista vaca, sino que se
supondr que la lista en la cual se va a insertar el nuevo nodo ya
existe. Se puede presentar cuatro casos en la operacin de insercin:
1. Insertar un nodo al inicio de la lista.
2. Insertar un nodo al final de la lista.
3. Insertar un nodo antes que otro.
4. Insertar un nodo despus que otro.
InsertarInicio( P, Dato)
{ Este algoritmo inserta un nodo al inicio de la lista. P es el apuntador al primer nodo de
la lista, y Dato es la informacin que se almacenar en el nuevo nodo}
1.- Crea ( Q)
2.- Hacer Q^Informacion Dato
3.- Hacer Q^Liga P y P Q
InsertarFinal( P, Dato)
{ Este algoritmo inserta un nodo al final de la lista. P es el apuntador al primer nodo de la
lista, y Dato es la informacin que se almacenar en el nuevo nodo}
1.- Hacer T P
2.- Repetir mientras T^Liga Nil
3.- Hacer T T^Liga
4.- Fin_repetir
5.- Crea ( Q )
6.- Hacer Q^informacion Dato, Q^Liga Nil y T^Liga Q
Borrado de un elemento.
Consiste en quitar un nodo de la lista, redefiniendo las ligas
correspondan. Se pueden presentar cuatro caso en esta operacin:
EliminaPrimero( P)
{ Este algoritmo borra el primer elemento de una lista. P es el apuntador al primer nodo
de la lista. }
1.- Hacer Q P
2.- Si Q^Liga Nil entonces
3.- Hacer P Q^Liga
4.- Sino
5.- Hacer P Nil
6.- Fin_si
7.- Quitar (Q)
EliminaUltimo( P)
{ Este algoritmo borra el ultimo elemento de una lista. P es el apuntador al primer nodo de
la lista. }
12.- Sino
13.- Si P=Q entonces
14.- Hacer P Q^Liga
15.- Sino
16.- Hacer T^Liga Q^liga
17.- Fin_si
18.- Quitar ( Q )
19.- Fin_si
EliminantesX( P , X )
{ Este algoritmo elimina un nodo anterior al nodo que contiene a X . P es el apuntador al
primer nodo de la lista. }
17.- Hacer P Q
18.- Sino
19.- Hacer R^Liga Q
20.- Quitar ( T )
21.- Fin_Si
22.- Fin_Si
23.- Fin_Si
Bsqueda de un elemento.
La operacin de bsqueda de un elemento en una lista se
realiza de modo secuencial. Se deben recorrer los nodos, tomando el
campo Enlace como puntero al siguiente nodo a visitar. Debido a esto
puede decirse que esta operacin esta implcita en algunos de los
casos de insercin y eliminacin.
Lista Simplemente enlazada.
Buscar( P , X )
{ Este algoritmo busca al elemento con informacion X, en una lista. P es el apuntador al
primer nodo de la lista. }
Recorrido de la lista
La operacin de recorrido consiste en visitar cada uno de los
nodos que forman la lista. La visita de un nodo puede definirse por
medio de una operacin muy simple ( por ejemplo la impresin de la
informacin del mismo), o por medio de operaciones complejas como
se desee.
Recorrido( P )
{ Este algoritmo recorre una lista cuyo primer nodo esta apuntado por P. }
1.- Hacer Q P
2.- Repetir mientras( Q Nil)
3.- Escribir Q^Informacion
4.- Hacer Q Q^Liga
5.- Fin_Repetir
Listas Circulares.
Definicin:
Las listas circulares tienen la caracterstica de que el ultimo
elemento de la misma apunta al primero. Las operaciones en listas
circulares son similares a las operaciones en listas lineales, en el caso
de la operacin de recorrido de listas circulares, es necesario aclarar
que se debe considerar algn criterio para detectar cuando se ha
visitado todos los nodos para evitar caer en ciclos infinito. Una posible
solucin consiste en usar un nodo extra, llamado nodo de cabecera ,
para indicar el inicio de la lista. Este nodo contendr informacin
especial, de tal manera que se distinga de los dems y as podr hacer
referencia al principio de la lista. Por ejemplo:
A B C D
Listas Doblemente Ligadas
Definicin:
Una lista doblemente ligada es una coleccin de nodos, en la
cual cada nodo tiene dos punteros, uno de ellos apuntando a su
predecesor y otro a su sucesor. Por medio de estos punteros se podra
avanzar o retroceder a travs de la lista, segn se tomen las
direcciones de uno u otro puntero.
Estructura de un nodo
Por ejemplo:
A B C D
NIL NIL
Listas Doblemente Ligadas Circulares
Definicin:
En las Listas doblemente ligadas circulares, el campo liga
izquierda del primer nodo de la lista apuntara al ultimo, y el campo liga
derecha de este apunta al primero. La principal ventaja de las listas
circulares es que permite la navegacin en cualquier sentido a travs de
la misma y adems, se puede recorrer toda la lista partiendo de
cualquier nodo. Sin embargo, debemos hacer notar que se deben
establecer condiciones adecuadas para detener el recorrido de una lista
para evitar caer en ciclos infinitos. Lo mismo que en el caso de listas
lineales suele usarse un nodo de cabecera. Este nodo tendr las
caractersticas descritas anteriormente, y servir como referencia para
detectar cuando se ha recorrido totalmente la lista. Por ejemplo:
A B C D