Está en la página 1de 30

Unidad 3

Estructuras Lineales

Subtemas

Listas

Operaciones bsicas con listas.

Tipos de listas.

Listas simplemente enlazadas.

Listas doblemente enlazadas.

Listas circulares.

Aplicaciones.

Subtemas

Pilas.

Representacin en memoria esttica y dinmica.

Operaciones bsicas con pilas.

Aplicaciones.

Notacin infija y postfija.

Recursividad con ayuda de pilas.

Colas.

Representacin en memoria esttica y dinmica.

Operaciones bsicas con colas.

Tipos de colas: Cola simple, Cola circular y Colas dobles.

Aplicaciones: Colas de prioridad.

Competencia

Conocer, identificar y aplicar las estructuras lineales en la


solucin de problemas del mundo real.

Evaluacin

Asistencia 5%

Portafolio 5%

Examen 40%

Prcticas de la Unidad 35%

Tareas 15%

Prcticas de la Unidad

Desarrollar programa que simule una lista de espera para la asignacin


de mesas en un restaurante.

Un evaluador de expresiones posfijas que funciona sobre expresiones


aritmticas que tienen esta forma: op1 op2 operador. Usando dos
pilas, una para los operandos y una para los operadores. Disea e
implementa una clase Calculadora que convierta expresiones infijas a
expresiones posfijo y despus utiliza las pilas para evaluar las
expresiones.

Desarrollar programa que simule la salida de aviones en un aeropuerto


utilizando colas de prioridad.

Listas

Listas

Es un tipo de estructura lineal y dinmica

Lineal porque a cada elemento le puede seguir slo otro elemento

Dinmica porque se puede manejar la memoria de manera flexible,


sin necesidad de reservar memoria con antelacin

Listas Ligadas o enlazadas

Son colecciones de elementos llamados nodos. El orden de stos se


establece por medio de un tipo de dato denominado puntero,
apuntador, direccin o referencia a otros nodos. (Cairo)

Es una coleccin o secuencia de elementos dispuestos uno detrs de


otro, en la que cada elemento se conecta al siguiente elemento por
un enlace o referencia. (Joyanes)

Listas enlazadas

La idea bsica consiste en construir una lista cuyos


elementos, llamados nodos, se componen de dos partes
(campos):

La primera parte contiene la informacin y es, por consiguiente,


un valor de un tipo genrico (denominado Dato, TipoElemento,
Info, etc.).

La segunda parte es una referencia (denominado enlace o sgte)


que apunta (enlaza) al siguiente elemento de la lista

Representacin del ltimo nodo

En resumen

Una lista enlazada consta de un nmero de elementos, y


cada elemento tiene dos componentes (campos), una
referencia al siguiente elemento de la lista y un valor, que
puede ser de cualquier tipo

Clasificacin de las listas enlazadas

Listas simplemente enlazadas.

Listas doblemente enlazadas

Lista circular simplemente enlazada

Lista circular doblemente enlazada

Lista Simplemente enlazada

Cada nodo (elemento) contiene un nico enlace que lo


conecta 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 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.

El primer nodo, frente, de una lista es el nodo apuntado por cabeza. La lista
encadena nodos juntos desde el frente al final (cola) de la lista. El final se
identifica como el nodo cuyo campo referencia tiene el valor null. La lista se
recorre desde el primero al ltimo nodo; en cualquier punto del recorrido la
posicin actual se referencia por el puntero (pointer) actual.

Una lista vaca (no contiene nodos), se representa con el puntero cabeza con
nulo (null).

Una lista se utiliza para almacenar informacin del mismo tipo, con la
caracterstica de que puede contener un nmero indeterminado de
elementos y que estos elementos mantienen un orden explcito.
Este ordenamiento explcito implica que cada elemento (un nodo de la
lista) contiene la direccin del siguiente elemento.
El nmero de nodos puede variar rpidamente en un proceso,
aumentando por inserciones o disminuyendo por eliminacin de nodos
Las inserciones se pueden realizar por cualquier punto de la lista: por la
cabeza (inicio), por el final, a partir o antes de un nodo determinado de
la lista.
Las eliminaciones tambin se pueden realizar en cualquier punto;
adems, se eliminan nodos dependiendo del campo de informacin o dato
que se desea suprimir de la lista.

Operaciones en las listas enlazadas

Inicializacin o creacin.

Insertar elementos en la lista.

Eliminar elementos de la lista.

Buscar elementos de la lista.

Recorrer la lista enlazada.

Comprobar si la lista est vaca.

Implementacin

La implementacin del TAD Lista requiere, en primer lugar, declarar


la clase Nodo, en la que se combinarn sus dos partes: el dato
(entero, real, doble, carcter, cadena o referencias a objetos) y un
enlace. Adems, la clase Lista debe tener las operaciones y el
atributo con la cabeza de la lista

Una lista enlazada se compone de una serie de nodos enlazados


mediante referencias. En Java, se declara una clase para contener las
dos partes del nodo: dato y enlace.

Por ejemplo, para una lista enlazada de nmeros enteros, la clase Nodo
es:

class Nodo{
int dato;
Nodo enlace;

public Nodo(int t)
{
dato = t;
enlace = null;

Acceso a la lista: cabecera y cola

Cuando se construye y se utiliza una lista enlazada en una aplicacin, el


acceso a la lista se hace mediante una o ms referencias a los nodos.

Normalmente, se accede a partir del primer nodo de la lista, llamado cabeza


o cabecera de la lista.

Una referencia al primer nodo se llama referencia cabeza. En ocasiones, se


mantiene tambin una referencia al ltimo nodo de la lista enlazada.

El ltimo nodo es la cola de la lista, y una referencia al ltimo nodo es la


referencia cola.

Nodo cola;

cola= null;

NOTA

La referencia cabeza (y cola) de una lista enlazada, normalmente, se


inicializa a null, indica lista vaca (no tiene nodos), cuando se inicia la
construccin de una lista. Cualquier mtodo que se escriba para
implementar listas enlazadas debe poder manejar un referencia de
cabeza (y de cola) null.

La creacin de una lista enlazada entraa la definicin de, al menos, la clases


Nodo y Lista.

La clase Lista define el atributo cabeza o primero, referencia a Nodo, para


acceder a los elementos de la lista. Normalmente, no es necesario definir el
atributo referencia cola. El constructor de Lista inicializa primero a null (lista
vaca).

Los mtodos de la clase Lista implementan las operaciones de una lista


enlazada: insercin, bsqueda...

Adems, el mtodo crearLista(), construye iterativamente el primer elemento


(primero) y los elementos sucesivos de una lista enlazada

package ListaEnteros;

public int getDato()

public class Nodo

return dato;

int dato;

Nodo enlace;

public Nodo getEnlace()

public Nodo(int x)

{
return enlace;

{
dato = x;

enlace = null;

public void setEnlace(Nodo enlace)

public Nodo(int x, Nodo n)

this.enlace = enlace;

{
dato = x;

enlace = n;

También podría gustarte