Вы находитесь на странице: 1из 34

UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA

FACULTAD DE INGENIERIA EN SISTEMAS DE INFORMACION


INGENIERIA EN SISTEMAS DE INFORMACION

ESTRUCTURAS DE DATOS
Ing. Otto Ortz

Agenda
Examen corto clase anterior
Listas:

Componentes de una lista


Operaciones de una lista
Tipos de listas

UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA


FACULTAD DE INGENIERIA EN SISTEMAS DE INFORMACION
INGENIERIA EN SISTEMAS DE INFORMACION

Examen corto clase anterior

Preguntas
Qu es un tipo de dato?
Cules son los tipos de datos ms comunes?

Qu es una estructura de datos?


Cul es la diferencia entre una estructura de datos
esttica y una dinmica?
Cules son las etapas necesarias para seleccionar un
tipo de estructura de datos?

UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA


FACULTAD DE INGENIERIA EN SISTEMAS DE INFORMACION
INGENIERIA EN SISTEMAS DE INFORMACION

Listas

Listas
Una lista es un contenedor secuencial en el que se
pueden
insertar
y
borrar
elementos
independientemente del tamao del contenedor.

Para insertar un elemento cualquiera debemos ir


recorriendo la lista.
Una insercin en medio de la lista no requiere mover
todos los elementos que se encuentran despus del
punto de insercin

Clasificacin de las listas enlazadas


Los diferentes tipos de listas dependen de la forma de enlazar los nodos, son:
Listas simplemente enlazadas. Cada nodo (elemento) contiene un nico
enlace que conecta ese nodo al nodo siguiente o nodo sucesor. La lista es
eficiente en recorridos directos (adelante).
Listas doblemente enlazadas. Cada nodo contiene dos enlaces, uno a su
nodo predecesor y el otro a su nodo sucesor. La lista es eficiente tanto en
recorrido directo (adelante) como en recorrido inverso (atrs).
Lista circular simplemente enlazada. Una lista enlazada simplemente en
la que el ltimo elemento (cola) se enlaza al primer elemento (cabeza) de tal
modo que la lista puede ser recorrida de modo circular (en anillo).
Lista circular doblemente enlazada. Una lista doblemente enlazada en la
que el ltimo elemento se enlaza al primer elemento y viceversa. Esta lista
se puede recorrer de modo circular (en anillo) tanto en direccin directa
(adelante) como inversa (atrs).
La implementacin de cada uno de los cuatro tipos de estructuras de listas se
puede desarrollar utilizando referencias.

Operaciones
Las operaciones bsicas de los diferentes tipos de
listas son las mismas slo que se realizan de formas
diferentes dependiendo de la naturaleza de cada una
de ellas.
Estas operaciones bsicas son:

Insertar
Eliminar
Editar
Consultar

Eliminar un elemento de una lista


La operacin de eliminar un dato de una lista supone
enlazar el nodo anterior con el nodo siguiente al que se
desea eliminar y liberar la memoria que ocupa. El algoritmo
para eliminar un elemento sigue estos pasos:
1. Bsqueda del nodo que contiene el dato. Se ha de obtener la
direccin del nodo a eliminar y la direccin del anterior.
2. El enlace del nodo anterior que apunte al nodo siguiente del que
se elimina.
3. Si el nodo a eliminar es el cabeza de la lista (primero), se modifica
primero para que tenga la direccin del siguiente nodo.
4. Por ltimo, la memoria ocupada por el nodo se libera. Es el propio
sistema el que libera el nodo, al dejar de estar referenciado.

Insercin de un elemento en una


lista Doble y/o Lista Circular Doble
Quitar un nodo de una lista supone realizar el enlace de dos nodos, el
nodo anterior con el nodo siguiente al que se desea eliminar. La
referencia adelante del nodo anterior debe apuntar al nodo siguiente, y
la referencia atrs del nodo siguiente debe apuntar al nodo anterior.
El algoritmo es similar al del borrado para una lista simple. Ahora, la
direccin del nodo anterior se encuentra en la referencia atrs del nodo
a borrar. Los pasos a seguir son:
1. Bsqueda del nodo que contiene el dato.
2. La referencia adelante del nodo anterior tiene que apuntar a la
referencia adelante del nodo a eliminar (si no es el nodo
cabecera).
3. La referencia atrs del nodo siguiente a borrar tiene que apuntar a
la referencia atrs del nodo a eliminar (si no es el ltimo nodo).
4. Si el nodo que se elimina es el primero, cabeza, se modifica
cabeza para que tenga la direccin del nodo siguiente.
5. La memoria ocupada por el nodo es liberada automticamente.

Editar un elemento en una lista


La operacin editar un elemento en una lista recorre la lista
hasta encontrar la posicin del nodo al que se desea
modificar la informacin del elemento y actualiza la
informacin del nodo por el nuevo elemento.
El algoritmo, una vez modificada la informacin del nodo,
devuelve la referencia a ese nodo (en caso negativo,
devuelve null).
Otro planteamiento es que el mtodo devuelva true si se
pudo modificar la informacin del nodo con el elemento, y
false si no se pudo realizar la operacin.

Consulta de un elemento en una


lista
La operacin bsqueda de un elemento en una lista
enlazada recorre la lista hasta encontrar el nodo con el
elemento.

El algoritmo, una vez encontrado el nodo, devuelve la


referencia a ese nodo (en caso negativo, devuelve null).
Otro planteamiento es que el mtodo devuelva true si
encuentra el nodo con el elemento, y false si no est en la
lista.

Nodo
Para comprender de una mejor manera el
concepto de Listas Simples es necesario,
primeramente, conocer la estructura bsica de
un nodo. En general un nodo consta de dos
partes:

Un campo Informacin que ser del tipo de


datos que se quiera almacenar en la lista
Un puntero sig, que se utiliza para establecer
el enlace con otro nodo de la lista. que ser
del tipo de datos que se quiera almacenar en
la lista. Si el nodo fuera el ltimo de la lista,
este campo tendr como valor: NULL (vaco).
Al emplearse el campo puntero sig para
relacionar dos nodos, no ser necesario
almacenar fsicamente a los nodos en
espacios contiguos.

LISTA SIMPLE ENLAZADA


Estructura conformada por un elemento fundamental denominado
Nodo. El Nodo es un elemento que contiene la informacin y la
direccin del siguiente elemento, el primer elemento creado se le
denomina cabeza y es la referencia para el desarrollo de las
diversas acciones en la Lista.
Una lista enlazada, en su forma mas simple, es una coleccin de
nodos que juntos forman un orden lineal. El ordenamiento esta
determinado de tal forma que cada nodo es un objeto que guarda
una referencia a un elemento y una referencia, llamado siguiente, a
otro nodo. La idea principal es que se cree un nuevo nodo, se pone
su enlace siguiente para que se referencie al mismo objeto que la
cabeza, y entonces se pone que la cabeza apunte al nuevo nodo.

LISTA SIMPLE ENLAZADA


Podra parecer extrao tener un nodo que referencia a otro nodo,
pero tal esquema trabaja fcilmente. La referencia siguiente dentro
de un nodo puede ser vista como un enlace o apuntador a otro
nodo. De igual nodo, moverse de un nodo a otro siguiendo una
referencia al siguiente es conocida como salto de enlace o salto de
apuntador.
Como en un arreglo, una lista simple enlazada guarda sus
elementos en un cierto orden. Este orden est determinado por la
cadenas de enlaces siguientes yendo desde cada nodo a su
sucesor en la lista. A diferencia de un arreglo, una lista simple
enlazada no tiene un tamao fijo predeterminado, y usa espacio
proporcional al nmero de sus elementos. Asimismo, no se emplean
nmeros ndices para los nodos en una lista enlazada. Por lo tanto,
no se puede decir slo por examinar un nodo si este es el segundo,
quinto u otro nodo en la lista.

LISTA SIMPLE ENLAZADA


Ejemplo de Insercin

LISTA SIMPLE ENLAZADA


Ejemplo de Eliminar

Implementacin de lista simple


Creando la Clase para el manejo de la lista

Mtodos para determinar si la lista


Est vaca y para obtener el tamao
De la misma

Implementacin de lista simple


Insercin

Implementacin de lista simple


Borrado

Implementacin de lista simple


Borrado

Implementacin de lista simple


Bsqueda

Implementacin de lista simple


Impresin

LISTA DOBLE ENLAZADA


En una lista doblemente enlazada cada nodo tiene una referencia al
nodo siguiente, el cual apunta al siguiente nodo en la lista, y al nodo
anterior el cual apunta al nodo previo en la lista. Al igual que en las
implementaciones de otras estructuras, en la lista doblemente
enlazada los nodos cabecera y final tienen referencias a null. Una
buena analoga de una lista doble enlazada sera un tren, donde
cada vagn esta conectado con el que le precede y el que le sigue.

Tipo de lista enlazada que permite ir en ambas direcciones hacia


adelante y hacia atrs en una lista enlazada. Tal lista permite una
gran variedad de operaciones rpidas de actualizacin, al estar
doblemente ligada facilita la implementacin de la bsqueda y
recorridos en ambos sentidos incluyendo la insercin y el borrado
en ambos extremos, y en el centro.

LISTA DOBLE ENLAZADA


Ejemplo de Insercin

LISTA DOBLE ENLAZADA


Ejemplo de Eliminar

LISTA CIRCULAR
En las listas lineales simples o dobles siempre hay un primer nodo y
un ltimo nodo que tiene el campo de enlace a nulo. Esto, porque
se delimita el comienzo y el trmino de la misma. Una lista circular,
por su naturaleza cclica, no tiene ni principio ni fin. No obstante, es
til y recomendable establecer un nodo de referencia a partir del
cual se acceda a la lista y as poder conocer la posicin inicial y
acceder a sus operaciones insertar, borrar etc.
Una lista circularmente enlazada tiene el mismo tipo de nodos que
una lista simple enlazada. Esto es, cada nodo en una lista
circularmente enlazada tiene un apuntador siguiente y una
referencia a un elemento. Pero no hay una cabeza o cola en la lista
circularmente enlazada. En vez de tener que el apuntador del ltimo
nodo sea null, en una lista circularmente enlazada, este apunta de
regreso al primer nodo. Por lo tanto, no hay primer nodo o ltimo. Si
se recorren los nodos de una lista circularmente enlazada desde
cualquier nodo usando los apuntadores sig, se ciclar a travs de
los nodos.

LISTA CIRCULAR
An cuando una lista circularmente enlazada no tiene inicio o
terminacin, no obstante se necesita que algn nodo est marcado
como especial, el cual ser llamado el cursor. El nodo cursor
permite tener un lugar para iniciar si se requiere recorrer una lista
circularmente inversa. Y si se recuerda esta posicin inicial,
entonces tambin se puede saber cuando se haya terminado con
un recorrido en la lista circularmente enlazada, que es cuando se
regresa al nodo que fue el nodo cursor cuando se inicio.

LISTA CIRCULAR
Ejemplo de Insercin

LISTA CIRCULAR
Ejemplo de Eliminar

LISTA CIRCULAR DOBLE


En una lista circular doblemente enlazada, cada nodo tiene dos
enlaces, anlogamente a la lista doblemente enlazada lineal, el
cambio radica en que el enlace anterior del primer nodo apunta al
ltimo y el enlace siguiente del ltimo nodo, apunta al primero

Como en una lista doblemente enlazada, las inserciones y


eliminaciones pueden ser hechas desde cualquier punto con acceso
a algn nodo contiguo. Aunque estructuralmente una lista circular
doblemente enlazada no tiene ni principio ni fin, un puntero de
acceso externo (centinela) puede establecer el nodo apuntado que
est en la cabeza o al nodo final, y as mantener el orden como en
una lista doblemente enlazada.

LISTA CIRCULAR DOBLE


La bsqueda y los algoritmos de ordenacin se simplifican si se
usan los llamados Nodos Centinelas o cabecera, donde cada
elemento apunta a otro elemento y nunca a nulo. El Nodo Centinela
o Puntero Cabeza contiene, como otro, un puntero siguiente que
apunta al que se considera como primer elemento de la lista
Tambin contiene un puntero previo que hace lo mismo con el
ltimo elemento.
El Nodo Centinela es definido como otro nodo en una lista
doblemente enlazada. Si los punteros anterior y siguiente apuntan
al Nodo Centinela la lista se considera vaca. En otro caso, si a la
lista se le aaden elementos ambos puntero apuntarn a otros
nodos. Estos Nodos Centinelas simplifican muchos las operaciones
pero hay que asegurarse de que los punteros anterior y siguiente
existen en cada momento.

LISTA CIRCULAR DOBLE


Ejemplo de Insercin

LISTA CIRCULAR DOBLE


Ejemplo de Eliminar

Вам также может понравиться