SlideShare una empresa de Scribd logo
1 de 52
Módulo 2: Tipos de Datos basados en Listas
NAC
Modalidad de estudios: Virtual
Mg. Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
Laguas@uisrael.edu.ec
Zeuszoft@protonmail.com
Objetivos del encuentro:
1. Adquirir los conceptos básicos relacionados con la
programación
2. Reconocer las características de la programación
3. Conocer la historia de la progrmación
Módulo Nro. 2
Frase Motivacional
Cuando te encuentres a ti mismo al
lado de la mayoría, es tiempo de
parar y reflexionar
(Mark Twain)
NAC © aguaszoft@outlook.es 4
Definición del TDA PILA
Una pila es un caso especial de lista en la cual todas las
inserciones y supresiones tienen lugar en un extremo
determinado llamado tope.
A las pilas se les llama también listas LIFO (last-in first-out) o
listas “primero en entrar, primero en salir”.
En el TDA Pila tampoco se definen operaciones de
posicionamiento en la pila. Esto es debido a que todas las
operaciones de acceso se realizan en la misma posición, el tope
de la pila.
NAC © aguaszoft@outlook.es 5
Operaciones del TDA PILA
TDA PILA incluye cinco operaciones:
CREA. Crea una pila vacía.
VACIA. Devuelve un valor cierto si la pila está vacía, y falso en caso
contrario.
TOPE. Devuelve el elemento situado el tope de la pila, sin extraerlo.
 PUSH. Añade un elemento a la pila, quedando éste situado en el
tope.
POP. Suprime el elemento situado en el tope de la pila.
NAC © aguaszoft@outlook.es 6
Especificación PILA
Pila = TDA con operaciones crea, vacia, tope, push, pop.
DESCRIPCIÓN:
Los valores del TDA Pila son pilas de elementos del tipo Elemento.
Las pilas son mutables:
 Push añaden elementos en la pila respectivamente.
 Pop elimina elementos de la pila respectiva.
OPERACIONES:
crea() devuelve (P: Pila)
 efecto: Devuelve la pila vacía P
NAC © aguaszoft@outlook.es 7
Especificación PILA
vacia(P:Pila) devuelve (booleano)
 efecto: Devuelve cierto si P es la pila vacía, y falso en caso contrario.
tope(P:Pila) devuelve (E:Elemento)
 requerimientos: La pila P es no vacía.
 efecto: Devuelve en E el elemento situado en el tope de la pila P
push(P:Pila; E:Elemento)
 modifica: P
 efecto: Añade el elemento E a la pila P, quedando éste situado en el tope.
pop(P:Pila)
 requerimientos: La pila P es no vacía.
 modifica: P
 efecto: Suprime el elemento situado en el tope de la pila
NAC © aguaszoft@outlook.es 8
Implementaciones del TDA PILA
 Tres alternativas para implementar
el TDA PILA:
1. Implementación basada en el TDA
Lista; consiste en definir una Pila
utilizando una lista.
2. Implementación con vectores;
utiliza un arreglo para almacenar los
elementos de la Pila
3. Implementación con referencias con
representación con simple enlace.
poppush
NAC © aguaszoft@outlook.es 9
Implementación basada en el TDA Listapackage pilaBasadaLista;
import pilaException.*;
import listaException.*;
import listaSimpleEnlazada.*;
public class Pila implements pilaInterface.Pila {
private Lista lista;
public Pila() {
lista = new Lista();
}
public boolean vacia() {
return lista.vacia();
}
public Object tope() throws PilaVaciaException {
if (vacia()) throw new PilaVaciaException();
try {
return lista.recupera(lista.primero());
} catch (ListaException e) {
System.err.println("Error interno de la Pila: "+e);
return null;
}
NAC © aguaszoft@outlook.es 10
Implementación basada en el TDA Lista 2
public void push(Object elemento) {
try {
if (vacia()) lista.inserta(lista.fin(),elemento);
else lista.inserta(lista.primero(),elemento);
} catch (ListaVaciaException e) {
System.err.println("Error interno de la Pila");
}
}
public void pop() throws PilaVaciaException{
if (vacia()) throw new PilaVaciaException();
try {
lista.suprime(lista.primero());
} catch (ListaException e) {
System.err.println("Error interno de la Pila");
}
}
} // fin class Pila
NAC © aguaszoft@outlook.es 11
Implementación con vectores (array)
Representación de una pila mediante un vector
0
1
a3
max-3
tope = max-3
a2
max-2
a1
max-1
NAC © aguaszoft@outlook.es 12
Implementación con vectores (array) 2
package pilaContigua;
import pilaException.*;
public class Pila implements pilaInterface.Pila {
private static int max = 100;
private Object elementos[];
private int tope;
public Pila() {
elementos = new Object[max];
tope=max;
}
public boolean vacia() {
return (tope==max);
}
NAC © aguaszoft@outlook.es 13
Implementación con vectores (array) 3
public Object tope() throws PilaVaciaException {
if (vacia()) throw new PilaVaciaException();
return elementos[tope];
}
public void push(Object elemento) {
tope--;
elementos[tope]=elemento;
}
public void pop() throws PilaVaciaException{
if (vacia()) throw new PilaVaciaException();
tope++;
}
} // fin class Pila
NAC © aguaszoft@outlook.es 14
Implementación con referencias
package pilaSimpleEnlazada;
import pilaException.*;
public class Pila implements pilaInterface.Pila {
class Celda {
Object elemento;
Celda sig;
}
private Celda pila;
public Pila() {
pila = null;
}
public boolean vacia() {
return (pila==null);
}
NAC © aguaszoft@outlook.es 15
Implementación con referencias 2
public Object tope() throws PilaVaciaException {
if (vacia()) throw new PilaVaciaException();
return pila.elemento;
}
public void push(Object elemento) {
Celda aux = new Celda();
aux.elemento = elemento;
aux.sig = pila;
pila = aux;
}
public void pop() throws PilaVaciaException{
if (vacia()) throw new PilaVaciaException();
pila = pila.sig;
}
} // fin class Pila
NAC © aguaszoft@outlook.es 16
Comparación de las implementaciones
 Los criterios que se utilizaron en Listas, son también
válidos para las implementaciones de pilas.
 La elección de una implementación u otra dependerá de los
requerimientos de la aplicación en la que se use.
 Es posible obtener representaciones para pilas que
permiten operaciones eficientes que se realizan en tiempos
de ejecución constantes.
NAC © aguaszoft@outlook.es 17
Ejemplo de pilas:
Torres de Hanoi
Hanoi(origen,destino,pivote,discos):
si discos=1
moveruno(origen,destino)
en otro caso
Hanoi(origen,pivote,destino,discos-1)
moveruno(origen,destino)
Hanoi(pivote,destino,origen,discos-1)
NAC © aguaszoft@outlook.es 18
Torres de Hanoi
Condiciones:
 5 fichas
 Ficha 1 > 2 > 3 > 4 > 5
 3 Torres
 A, B, C
 Torre A inicia con 5 fichas
 Torre B y C vacías
 Objetivo mover las fichas de A a C
 Un movimiento a la vez
 No puede ir una ficha mayor sobre una menor
 Ganador el que menor numero de movimientos realiza
NAC © aguaszoft@outlook.es 19
Definición del TDA Cola
Una cola es un caso particular de una lista en el cual los
elementos se insertan en un extremo (el posterior o final) y se
suprimen en el otro (el anterior o frente).
Las colas se conocen también como listas FIFO (first-in first-
out) o listas primero en entrar, primero en salir.
Algunas de las operaciones de listas pierden sentido en el
TDA Cola y se definen nuevas operaciones.
NAC © aguaszoft@outlook.es 20
Especificación
COLA
TDA con operaciones crea, vacía, primero, inserta, suprime.
 DESCRIPCIÓN:
Los valores del TDA Cola son colas de elementos del tipo
Elemento.
Las colas son dinámicas añaden y eliminan elementos en la
cola respectivamente.
OPERACIONES:
crea(Q)
efecto: Devuelve la cola vacía Q.
NAC © aguaszoft@outlook.es 21
Especificación
vacia(Q)
efecto: Devuelve verdadero si Q es vacía y falso en caso contrario.
primero(Q, e)
requerimientos: La cola es no vacía.
efecto: Devuelve el primer elemento e de la cola Q.
inserta(Q, e)
modifica: Q.
efecto: Añade el elemento e por el extremo final de la cola Q.
suprime(Q)
requerimientos: La cola es no vacía.
modifica: Q.
efecto: Suprime el primer elemento de la cola Q.
NAC © aguaszoft@outlook.es 22
Ejemplo : Imprimir colaimport colaInterface.*;
import colaException.*;
import java.io.*;
public class ColaUtil {
static public void imprimir(Cola cola) {
try {
Cola colaAux = duplicar(cola);
while (!colaAux.vacia()) {
Object e = colaAux.primero();
colaAux.suprime();
System.out.print(e+" ");
}
System.out.println();
} catch (ColaException e) {
System.err.println("Error en el uso de la Cola: "+e);
}
} // fin imprimir()
NAC © aguaszoft@outlook.es 23
Ejemplo: duplicar colastatic public Cola duplicar(Cola cola) {
try {
Cola cola2 = (Cola)cola.getClass().newInstance();
Cola colaAux = (Cola)cola.getClass().newInstance();
while (!cola.vacia()) {
Object e = cola.primero();
cola.suprime();
cola2.inserta(e);
colaAux.inserta(e);
}
while (!colaAux.vacia()) {
Object e = colaAux.primero();
colaAux.suprime();
cola.inserta(e);
}
return cola2;
} catch (ColaException e) {
System.err.println("Error en el uso de la Cola: "+e);
} catch (Exception e) { System.err.println(e); }
return null;
} // fin duplicar()
NAC © aguaszoft@outlook.es 24
Ejemplo: concatenar colasstatic public Cola concatenar(Cola cola1, Cola cola2) {
try {
Cola cola3 = (Cola)cola1.getClass().newInstance();
Cola colaAux = duplicar(cola1);
while (!colaAux.vacia()) {
Object e = colaAux.primero();
colaAux.suprime(); cola3.inserta(e);
}
colaAux = duplicar(cola2);
while (!colaAux.vacia()) {
Object e = colaAux.primero();
colaAux.suprime(); cola3.inserta(e);
}
return cola3;
} catch (ColaException e) {
System.err.println("Error en el uso de la Cola: "+e);
} catch (Exception e) { System.err.println(e); }
return null;
} // fin concatenar
} // fin class ColaUtil
NAC © aguaszoft@outlook.es 25
COLA Implementaciones
TDA COLA se puede implementar con:
Basada en el TDA Lista
Basada en vectores circulares
Basada en referencias
Basada en cursores (arreglos)
enqueue dequeue
NAC © aguaszoft@outlook.es 26
Basada en TDA Lista 1package colaBasadaLista;
import colaException.*;
import listaException.*;
import listaSimpleEnlazada.*;
public class Cola implements colaInterface.Cola {
private Lista lista;
public Cola() {
lista = new Lista();
}
public boolean vacia() {
return lista.vacia();
}
public Object primero() throws ColaVaciaException {
if (vacia()) throw new ColaVaciaException();
try {
return lista.recupera(lista.primero());
} catch (ListaException e) {
System.err.println("Error interno de la Cola: "+e);
return null;
}
NAC © aguaszoft@outlook.es 27
Basada en el TDA Lista 2
public void inserta(Object elemento) {
lista.inserta(lista.fin(),elemento);
}
public void suprime() throws ColaVaciaException{
if (vacia()) throw new ColaVaciaException();
try {
lista.suprime(lista.primero());
} catch (ListaException e) {
System.err.println("Error interno de la Cola: "+e);
}
}
} // fin class Cola
NAC © aguaszoft@outlook.es 28
Basada en vector circular 1
public class Cola {
private static int max = 100;
private Object elementos[];
private int frente, post;
} // fin clase Cola
a1
a2
an
an-1
...
...
frente post
NAC © aguaszoft@outlook.es 29
Basada en vector circular 2
package colaVectoresCirculares;
import colaException.*;
public class Cola implements colaInterface.Cola {
private static int max = 100;
private Object elementos[];
private int frente, post;
public Cola() {
elementos = new Object[max+1];
frente = 1;
post = 0;
}
public boolean vacia() {
return (frente == ((post+1)%(max+1)));
}
NAC © aguaszoft@outlook.es 30
Basada en vector circular 3
public Object primero() throws ColaVaciaException {
if (vacia()) throw new ColaVaciaException();
return elementos[frente];
}
public void inserta(Object elemento) {
post = (post+1)%(max+1);
elementos[post]=elemento;
}
public void suprime() throws ColaVaciaException{
if (vacia()) throw new ColaVaciaException();
frente = (frente+1)%(max+1);
}
} // fin clase Cola
NAC © aguaszoft@outlook.es 31
Basada en referencias 1
package colaSimpleEnlazada;
import colaException.*;
public class Cola implements colaInterface.Cola {
class Celda {
Object elemento;
Celda sig;
}
private Celda frente,post;
public Cola() {
frente = new Celda();
frente.sig = null;
post = frente;
}
public boolean vacia() {
return (frente==post);
}
NAC © aguaszoft@outlook.es 32
Basada en referencias 2
public Object primero() throws ColaVaciaException {
if (vacia()) throw new ColaVaciaException();
return frente.sig.elemento;
}
public void inserta(Object elemento) {
post.sig = new Celda();
post = post.sig;
post.elemento = elemento;
post.sig = null;
}
public void suprime() throws ColaVaciaException{
if (vacia()) throw new ColaVaciaException();
frente = frente.sig;
}
} // fin clase Cola
NAC © aguaszoft@outlook.es 33
Comparación
• Los criterios descritos en listas son también válidos para
las implementaciones de colas.
• La elección de una implementación u otra dependerá de
los requerimientos de la aplicación en la que se use.
• Es posible obtener representaciones para colas que
permiten operaciones eficientes con tiempos de ejecución
optimizados.
NAC © aguaszoft@outlook.es 34
COLAS ESPECIALES
 Dicolas
 Las eliminaciones e inserciones pueden realizarse en
ambos extremos de la lista.
 Es como tener dos colas en una sola, cada una con su
propio sentido.
Colas de Prioridad
 Es una cola a cuyos elementos se les ha asignado una
prioridad, de forma que el orden en que los elementos
son procesados sigue las siguientes reglas:
El elemento con mayor prioridad es procesado primero.
Dos elementos con la misma prioridad son procesados según el
orden en que fueron introducidos en la cola.
NAC © aguaszoft@outlook.es 35
Colas de Prioridad
 Existen dos métodos para la representación de
colas de prioridad:
 Tener la cola siempre ordenada de acuerdo a las
prioridades de sus elementos y
sacar cada vez el primer elemento de ésta, es decir,
el de mayor prioridad. En este caso, cuando se
introduce un elemento en la cola, debe insertarse en el
lugar correspondiente de acuerdo a su prioridad.
 Insertar los elementos siempre al final de la cola, y
cuando se va a sacar un elemento, buscar el que tiene
mayor prioridad.
NAC © aguaszoft@outlook.es 36
Interface Colas de Prioridad
 La interface en Java del TDA Cola de Prioridad puede ser
la siguiente:
package colaPrioridadInterface;
import colaException.*;
public interface ColaPrioridad {
public boolean vacia();
public Object primero() throws ColaVaciaException;
public int primero_prioridad() throws
ColaVaciaException;
public void inserta(Object elemento, int prioridad);
public void suprime() throws ColaVaciaException;
} // fin interface ColaPrioridad
NAC © aguaszoft@outlook.es 37
Implementación Cola de Prioridad
package colaPrioridadSimpleEnlazada;
import colaException.*;
public class ColaPrioridad implements
colaPrioridadInterface.ColaPrioridad {
class Celda {
Object elemento;
int prioridad;
Celda sig;
}
private Celda cola;
public ColaPrioridad() {
cola = new Celda();
cola.sig = null;
}
NAC © aguaszoft@outlook.es 38
Implementación Cola de Prioridad
public boolean vacia() {
return (cola.sig==null);
}
public Object primero() throws ColaVaciaException {
if (vacia()) throw new ColaVaciaException();
return cola.sig.elemento;
}
public int primero_prioridad() throws ColaVaciaException {
if (vacia()) throw new ColaVaciaException();
return cola.sig.prioridad;
}
public int primero_prioridad() throws ColaVaciaException {
if (vacia()) throw new ColaVaciaException();
return cola.sig.prioridad;
}
NAC © aguaszoft@outlook.es 39
Implementación Cola de Prioridadpublic void inserta(Object elemento, int prioridad) {
Celda p,q;
boolean encontrado = false;
p = cola;
while((p.sig!=null)&&(!encontrado)) {
if (p.sig.prioridad<prioridad)
encontrado = true;
else p = p.sig;
}
q = p.sig;
p.sig = new Celda();
p = p.sig;
p.elemento = elemento;
p.prioridad = prioridad;
p.sig = q;
}
public void suprime() throws ColaVaciaException {
if (vacia()) throw new ColaVaciaException();
cola = cola.sig;
}
NAC © aguaszoft@outlook.es 40
Java Class Queue
 Constructor
Queue()
Metodos
java.lang.Object
dequeue() remueve y retorna lel item de la cabecera de la cola
Void
enqueue(java.lang.Objectitem) añade el item especificado al final de la
cola
Boolean
isEmpty() Retorna verdadero cuando la cola es vacía
Int
size() Retorna el numero de elementos que estan en la cola
java.lang.String
toString() retorna un String que representa el contenido de la cola
NAC © aguaszoft@outlook.es 41
Aplicación
Simulación de cajas y cajeros
El modelo de simulación examinar la ocurrencia de
eventos.
Los principales objetos dinámicos son los procesos.
Los principales objetos pasivos son los recursos.
Dos parámetros importantes:
tiempo de servicio y
tiempo de llegada de los clientes.
NAC © aguaszoft@outlook.es 42
Proceso de llegada
•Si el nº de clientes que llegan es finito o infinito
•Si se tiene uno o varios tipos de clientes
•Si se tiene uno o varios tipos de demanda distintos
•Si las llegadas son deterministicas o estocasticas
•Si la tasa de llegada depende de la longitud de la cola
NAC © aguaszoft@outlook.es 43
Proceso del servidor - cajero
•Cuantos servidores estan disponibles al mismo tiempo
para los mismos clientes con demandas identicas.
•Si hay uno o varios tipos de servidores
•Si la tasa de servicio debe ser constante o dependiente
de las exigencias del cliente
•Si el tiempo de servicio debe ser fijo (deterministico) o
estocastico
NAC © aguaszoft@outlook.es 44
Aplicación
Simulación cajas y colas
• Condiciones:
• Numero de cajas de 1 .. 5
• El usuario determina cuantas caja desea
• Cada caja tiempo T1 .. T5 tiempo atención
• Numero de colas de 1 .. 5
• EL usuario determina cuantas colas desea
• Arribo de clientes
• Cada cola tiempo A1 .. A5 tiempo de arribo
NAC © aguaszoft@outlook.es 45
Aplicación
Simulación cajas y colas 2
• Aplicación
• Modo gráfico
• Condiciones anteriores
• Facilidad de uso
• Conclusiones al usuario
• Numero óptimo de cajeros
• Numero óptimo de colas
NAC © aguaszoft@outlook.es 46
LISTAS DOBLES
• Descripción
• A una lista simplemente ligada
• Complementarla con un acceso “BACK”
• Orientación FRONT es lista normal
• Orientación BACK es lista reversa
• Utilización
• Es más óptimo para determinar elementos anterior y siguiente
• El acceso “back” permite regenerar lista
• Óptimo para orden ascendente / descendente
Front
Back
NAC © aguaszoft@outlook.es 47
LISTAS DOBLES
• OPERACIONES:
• MAKENULL(L) Inicializa cada sentido a NULL
• INSERT(L, p, e) p referente desde Front
• DELETE(L, p) p referente desde Front
• FIRST(L) Front(L)
• END(L) Back(L)
• PRINT(L, s) s sentido de impresión
• s puede ser front o back
• REPAIR(L) reparar referencias o cursores
perdidos
NAC © aguaszoft@outlook.es 48
LISTAS CIRCULARES
• Definición:
• No existe fin de lista
• Existe un indicador de inicio de lista
• El primer nodo es el siguiente del último
• Ejemplo:
• Atención de procesos “multitarea”
a1
a2
ai+1
ai
...
...
L1
an
NAC © aguaszoft@outlook.es 49
LISTAS CIRCULARES
• OPERACIONES:
• MAKENULL(L) Crea lista vacía
• FIRST(L) Referencia inicio de L
• END(L) Último elemento ingresado
• INSERT(L, p, e) Posición referencial desde L
• DELETE(L,p) Posición referencial desde L
• NEXT(L,p) Posición referencial desde L
• PREVIOUS(L,p) Posición referencial desde L
• PRINT(L) Secuencia infinita de elementos
• Es necesario indicador de salida
NAC © aguaszoft@outlook.es 50
DOBLES CIRCULARES
• Definición:
• Es la combinación de lista circular con lista doble
• Permite atención de procesos front – back
• Utilizada en S.O. Atención de CPU
• Es segura y óptima
a1
a2
ai+1
ai
...
...
L1
an
NAC © aguaszoft@outlook.es 51
DOBLES CIRCULARES
• OPERACIONES:
• MAKENULL(L) Las referencias se inicializan en null
• FIRST(L) Referencia desde L1
• END(L) Último elemento ingresado
• INSERT(L, p, e) p considerado desde L1
• DELETE(L,p) p considerado desde L1
• PRINT(L, s) s sentido front / back
• NEXT(L, p, s)
• PREVIOUS(L, p, s)
NODO 3
GRACIAS

Más contenido relacionado

La actualidad más candente

La actualidad más candente (17)

Pilas
PilasPilas
Pilas
 
Pila dinamica y pila estatica
Pila dinamica y pila estaticaPila dinamica y pila estatica
Pila dinamica y pila estatica
 
Colas
ColasColas
Colas
 
PILAS
PILASPILAS
PILAS
 
Pilas
PilasPilas
Pilas
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
10. aplicaciones de las pilas
10. aplicaciones de las pilas10. aplicaciones de las pilas
10. aplicaciones de las pilas
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
La torre de hanoi segundo lab
La torre de hanoi segundo labLa torre de hanoi segundo lab
La torre de hanoi segundo lab
 
JavaScript pilas (Stacks) y colas (Queues) 2
JavaScript pilas (Stacks) y colas (Queues) 2JavaScript pilas (Stacks) y colas (Queues) 2
JavaScript pilas (Stacks) y colas (Queues) 2
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Estructura de datos I pilas
Estructura de datos I pilasEstructura de datos I pilas
Estructura de datos I pilas
 

Similar a 2- TDA Listas

Curso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionCurso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionLUISFERNANDOMORENOSO2
 
Unidad iii Pilas y colas
Unidad iii Pilas y colasUnidad iii Pilas y colas
Unidad iii Pilas y colasCecilia Loeza
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Z Karina Hernandez A
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130reyarturo16
 
Pilas y Colas
Pilas y ColasPilas y Colas
Pilas y ColasAlex Pin
 
Presentacion sobre Listas Enlazadas en C++.ppt
Presentacion sobre Listas Enlazadas en C++.pptPresentacion sobre Listas Enlazadas en C++.ppt
Presentacion sobre Listas Enlazadas en C++.pptLucasTula1
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datoscharlezgt
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasElbery
 
Estructura de datos
Estructura de datos Estructura de datos
Estructura de datos jarydr18
 

Similar a 2- TDA Listas (20)

Pilas
PilasPilas
Pilas
 
Curso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionCurso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacion
 
Unidad iii Pilas y colas
Unidad iii Pilas y colasUnidad iii Pilas y colas
Unidad iii Pilas y colas
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02
 
Estructura de datos pilas y colas
Estructura de datos pilas y colasEstructura de datos pilas y colas
Estructura de datos pilas y colas
 
Colas
ColasColas
Colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130
 
Pilas y Colas
Pilas y ColasPilas y Colas
Pilas y Colas
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Presentacion sobre Listas Enlazadas en C++.ppt
Presentacion sobre Listas Enlazadas en C++.pptPresentacion sobre Listas Enlazadas en C++.ppt
Presentacion sobre Listas Enlazadas en C++.ppt
 
6-Pilas.pdf
6-Pilas.pdf6-Pilas.pdf
6-Pilas.pdf
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
PILAS
PILASPILAS
PILAS
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Estructura de datos
Estructura de datos Estructura de datos
Estructura de datos
 

Más de Luis Fernando Aguas Bucheli (20)

EFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptxEFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptx
 
P-S2.pptx
P-S2.pptxP-S2.pptx
P-S2.pptx
 
EBTS-S1.pptx
EBTS-S1.pptxEBTS-S1.pptx
EBTS-S1.pptx
 
P-S3.pptx
P-S3.pptxP-S3.pptx
P-S3.pptx
 
EBTS-S4.pptx
EBTS-S4.pptxEBTS-S4.pptx
EBTS-S4.pptx
 
P-S4.pptx
P-S4.pptxP-S4.pptx
P-S4.pptx
 
P-S1.pptx
P-S1.pptxP-S1.pptx
P-S1.pptx
 
EBTS-S3.pptx
EBTS-S3.pptxEBTS-S3.pptx
EBTS-S3.pptx
 
EBTS-S2.pptx
EBTS-S2.pptxEBTS-S2.pptx
EBTS-S2.pptx
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
PDIDTI-S4.pptx
PDIDTI-S4.pptxPDIDTI-S4.pptx
PDIDTI-S4.pptx
 
PDIDTI-S2.pptx
PDIDTI-S2.pptxPDIDTI-S2.pptx
PDIDTI-S2.pptx
 
PDIDTI-S1.pptx
PDIDTI-S1.pptxPDIDTI-S1.pptx
PDIDTI-S1.pptx
 
PDIDTI-S8.pptx
PDIDTI-S8.pptxPDIDTI-S8.pptx
PDIDTI-S8.pptx
 
PDIDTI-S6.pptx
PDIDTI-S6.pptxPDIDTI-S6.pptx
PDIDTI-S6.pptx
 
PDIDTI-S5.pptx
PDIDTI-S5.pptxPDIDTI-S5.pptx
PDIDTI-S5.pptx
 
PDIDTI-S3.pptx
PDIDTI-S3.pptxPDIDTI-S3.pptx
PDIDTI-S3.pptx
 
TIC-S4.pptx
TIC-S4.pptxTIC-S4.pptx
TIC-S4.pptx
 
TIC-S3.pptx
TIC-S3.pptxTIC-S3.pptx
TIC-S3.pptx
 
TIC-S2.pptx
TIC-S2.pptxTIC-S2.pptx
TIC-S2.pptx
 

Último

2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfDiegoMadrigal21
 

Último (20)

2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdf
 

2- TDA Listas

  • 1. Módulo 2: Tipos de Datos basados en Listas NAC Modalidad de estudios: Virtual Mg. Luis Fernando Aguas Bucheli +593 984015184 @Aguaszoft Laguas@uisrael.edu.ec Zeuszoft@protonmail.com
  • 2. Objetivos del encuentro: 1. Adquirir los conceptos básicos relacionados con la programación 2. Reconocer las características de la programación 3. Conocer la historia de la progrmación Módulo Nro. 2
  • 3. Frase Motivacional Cuando te encuentres a ti mismo al lado de la mayoría, es tiempo de parar y reflexionar (Mark Twain)
  • 4. NAC © aguaszoft@outlook.es 4 Definición del TDA PILA Una pila es un caso especial de lista en la cual todas las inserciones y supresiones tienen lugar en un extremo determinado llamado tope. A las pilas se les llama también listas LIFO (last-in first-out) o listas “primero en entrar, primero en salir”. En el TDA Pila tampoco se definen operaciones de posicionamiento en la pila. Esto es debido a que todas las operaciones de acceso se realizan en la misma posición, el tope de la pila.
  • 5. NAC © aguaszoft@outlook.es 5 Operaciones del TDA PILA TDA PILA incluye cinco operaciones: CREA. Crea una pila vacía. VACIA. Devuelve un valor cierto si la pila está vacía, y falso en caso contrario. TOPE. Devuelve el elemento situado el tope de la pila, sin extraerlo.  PUSH. Añade un elemento a la pila, quedando éste situado en el tope. POP. Suprime el elemento situado en el tope de la pila.
  • 6. NAC © aguaszoft@outlook.es 6 Especificación PILA Pila = TDA con operaciones crea, vacia, tope, push, pop. DESCRIPCIÓN: Los valores del TDA Pila son pilas de elementos del tipo Elemento. Las pilas son mutables:  Push añaden elementos en la pila respectivamente.  Pop elimina elementos de la pila respectiva. OPERACIONES: crea() devuelve (P: Pila)  efecto: Devuelve la pila vacía P
  • 7. NAC © aguaszoft@outlook.es 7 Especificación PILA vacia(P:Pila) devuelve (booleano)  efecto: Devuelve cierto si P es la pila vacía, y falso en caso contrario. tope(P:Pila) devuelve (E:Elemento)  requerimientos: La pila P es no vacía.  efecto: Devuelve en E el elemento situado en el tope de la pila P push(P:Pila; E:Elemento)  modifica: P  efecto: Añade el elemento E a la pila P, quedando éste situado en el tope. pop(P:Pila)  requerimientos: La pila P es no vacía.  modifica: P  efecto: Suprime el elemento situado en el tope de la pila
  • 8. NAC © aguaszoft@outlook.es 8 Implementaciones del TDA PILA  Tres alternativas para implementar el TDA PILA: 1. Implementación basada en el TDA Lista; consiste en definir una Pila utilizando una lista. 2. Implementación con vectores; utiliza un arreglo para almacenar los elementos de la Pila 3. Implementación con referencias con representación con simple enlace. poppush
  • 9. NAC © aguaszoft@outlook.es 9 Implementación basada en el TDA Listapackage pilaBasadaLista; import pilaException.*; import listaException.*; import listaSimpleEnlazada.*; public class Pila implements pilaInterface.Pila { private Lista lista; public Pila() { lista = new Lista(); } public boolean vacia() { return lista.vacia(); } public Object tope() throws PilaVaciaException { if (vacia()) throw new PilaVaciaException(); try { return lista.recupera(lista.primero()); } catch (ListaException e) { System.err.println("Error interno de la Pila: "+e); return null; }
  • 10. NAC © aguaszoft@outlook.es 10 Implementación basada en el TDA Lista 2 public void push(Object elemento) { try { if (vacia()) lista.inserta(lista.fin(),elemento); else lista.inserta(lista.primero(),elemento); } catch (ListaVaciaException e) { System.err.println("Error interno de la Pila"); } } public void pop() throws PilaVaciaException{ if (vacia()) throw new PilaVaciaException(); try { lista.suprime(lista.primero()); } catch (ListaException e) { System.err.println("Error interno de la Pila"); } } } // fin class Pila
  • 11. NAC © aguaszoft@outlook.es 11 Implementación con vectores (array) Representación de una pila mediante un vector 0 1 a3 max-3 tope = max-3 a2 max-2 a1 max-1
  • 12. NAC © aguaszoft@outlook.es 12 Implementación con vectores (array) 2 package pilaContigua; import pilaException.*; public class Pila implements pilaInterface.Pila { private static int max = 100; private Object elementos[]; private int tope; public Pila() { elementos = new Object[max]; tope=max; } public boolean vacia() { return (tope==max); }
  • 13. NAC © aguaszoft@outlook.es 13 Implementación con vectores (array) 3 public Object tope() throws PilaVaciaException { if (vacia()) throw new PilaVaciaException(); return elementos[tope]; } public void push(Object elemento) { tope--; elementos[tope]=elemento; } public void pop() throws PilaVaciaException{ if (vacia()) throw new PilaVaciaException(); tope++; } } // fin class Pila
  • 14. NAC © aguaszoft@outlook.es 14 Implementación con referencias package pilaSimpleEnlazada; import pilaException.*; public class Pila implements pilaInterface.Pila { class Celda { Object elemento; Celda sig; } private Celda pila; public Pila() { pila = null; } public boolean vacia() { return (pila==null); }
  • 15. NAC © aguaszoft@outlook.es 15 Implementación con referencias 2 public Object tope() throws PilaVaciaException { if (vacia()) throw new PilaVaciaException(); return pila.elemento; } public void push(Object elemento) { Celda aux = new Celda(); aux.elemento = elemento; aux.sig = pila; pila = aux; } public void pop() throws PilaVaciaException{ if (vacia()) throw new PilaVaciaException(); pila = pila.sig; } } // fin class Pila
  • 16. NAC © aguaszoft@outlook.es 16 Comparación de las implementaciones  Los criterios que se utilizaron en Listas, son también válidos para las implementaciones de pilas.  La elección de una implementación u otra dependerá de los requerimientos de la aplicación en la que se use.  Es posible obtener representaciones para pilas que permiten operaciones eficientes que se realizan en tiempos de ejecución constantes.
  • 17. NAC © aguaszoft@outlook.es 17 Ejemplo de pilas: Torres de Hanoi Hanoi(origen,destino,pivote,discos): si discos=1 moveruno(origen,destino) en otro caso Hanoi(origen,pivote,destino,discos-1) moveruno(origen,destino) Hanoi(pivote,destino,origen,discos-1)
  • 18. NAC © aguaszoft@outlook.es 18 Torres de Hanoi Condiciones:  5 fichas  Ficha 1 > 2 > 3 > 4 > 5  3 Torres  A, B, C  Torre A inicia con 5 fichas  Torre B y C vacías  Objetivo mover las fichas de A a C  Un movimiento a la vez  No puede ir una ficha mayor sobre una menor  Ganador el que menor numero de movimientos realiza
  • 19. NAC © aguaszoft@outlook.es 19 Definición del TDA Cola Una cola es un caso particular de una lista en el cual los elementos se insertan en un extremo (el posterior o final) y se suprimen en el otro (el anterior o frente). Las colas se conocen también como listas FIFO (first-in first- out) o listas primero en entrar, primero en salir. Algunas de las operaciones de listas pierden sentido en el TDA Cola y se definen nuevas operaciones.
  • 20. NAC © aguaszoft@outlook.es 20 Especificación COLA TDA con operaciones crea, vacía, primero, inserta, suprime.  DESCRIPCIÓN: Los valores del TDA Cola son colas de elementos del tipo Elemento. Las colas son dinámicas añaden y eliminan elementos en la cola respectivamente. OPERACIONES: crea(Q) efecto: Devuelve la cola vacía Q.
  • 21. NAC © aguaszoft@outlook.es 21 Especificación vacia(Q) efecto: Devuelve verdadero si Q es vacía y falso en caso contrario. primero(Q, e) requerimientos: La cola es no vacía. efecto: Devuelve el primer elemento e de la cola Q. inserta(Q, e) modifica: Q. efecto: Añade el elemento e por el extremo final de la cola Q. suprime(Q) requerimientos: La cola es no vacía. modifica: Q. efecto: Suprime el primer elemento de la cola Q.
  • 22. NAC © aguaszoft@outlook.es 22 Ejemplo : Imprimir colaimport colaInterface.*; import colaException.*; import java.io.*; public class ColaUtil { static public void imprimir(Cola cola) { try { Cola colaAux = duplicar(cola); while (!colaAux.vacia()) { Object e = colaAux.primero(); colaAux.suprime(); System.out.print(e+" "); } System.out.println(); } catch (ColaException e) { System.err.println("Error en el uso de la Cola: "+e); } } // fin imprimir()
  • 23. NAC © aguaszoft@outlook.es 23 Ejemplo: duplicar colastatic public Cola duplicar(Cola cola) { try { Cola cola2 = (Cola)cola.getClass().newInstance(); Cola colaAux = (Cola)cola.getClass().newInstance(); while (!cola.vacia()) { Object e = cola.primero(); cola.suprime(); cola2.inserta(e); colaAux.inserta(e); } while (!colaAux.vacia()) { Object e = colaAux.primero(); colaAux.suprime(); cola.inserta(e); } return cola2; } catch (ColaException e) { System.err.println("Error en el uso de la Cola: "+e); } catch (Exception e) { System.err.println(e); } return null; } // fin duplicar()
  • 24. NAC © aguaszoft@outlook.es 24 Ejemplo: concatenar colasstatic public Cola concatenar(Cola cola1, Cola cola2) { try { Cola cola3 = (Cola)cola1.getClass().newInstance(); Cola colaAux = duplicar(cola1); while (!colaAux.vacia()) { Object e = colaAux.primero(); colaAux.suprime(); cola3.inserta(e); } colaAux = duplicar(cola2); while (!colaAux.vacia()) { Object e = colaAux.primero(); colaAux.suprime(); cola3.inserta(e); } return cola3; } catch (ColaException e) { System.err.println("Error en el uso de la Cola: "+e); } catch (Exception e) { System.err.println(e); } return null; } // fin concatenar } // fin class ColaUtil
  • 25. NAC © aguaszoft@outlook.es 25 COLA Implementaciones TDA COLA se puede implementar con: Basada en el TDA Lista Basada en vectores circulares Basada en referencias Basada en cursores (arreglos) enqueue dequeue
  • 26. NAC © aguaszoft@outlook.es 26 Basada en TDA Lista 1package colaBasadaLista; import colaException.*; import listaException.*; import listaSimpleEnlazada.*; public class Cola implements colaInterface.Cola { private Lista lista; public Cola() { lista = new Lista(); } public boolean vacia() { return lista.vacia(); } public Object primero() throws ColaVaciaException { if (vacia()) throw new ColaVaciaException(); try { return lista.recupera(lista.primero()); } catch (ListaException e) { System.err.println("Error interno de la Cola: "+e); return null; }
  • 27. NAC © aguaszoft@outlook.es 27 Basada en el TDA Lista 2 public void inserta(Object elemento) { lista.inserta(lista.fin(),elemento); } public void suprime() throws ColaVaciaException{ if (vacia()) throw new ColaVaciaException(); try { lista.suprime(lista.primero()); } catch (ListaException e) { System.err.println("Error interno de la Cola: "+e); } } } // fin class Cola
  • 28. NAC © aguaszoft@outlook.es 28 Basada en vector circular 1 public class Cola { private static int max = 100; private Object elementos[]; private int frente, post; } // fin clase Cola a1 a2 an an-1 ... ... frente post
  • 29. NAC © aguaszoft@outlook.es 29 Basada en vector circular 2 package colaVectoresCirculares; import colaException.*; public class Cola implements colaInterface.Cola { private static int max = 100; private Object elementos[]; private int frente, post; public Cola() { elementos = new Object[max+1]; frente = 1; post = 0; } public boolean vacia() { return (frente == ((post+1)%(max+1))); }
  • 30. NAC © aguaszoft@outlook.es 30 Basada en vector circular 3 public Object primero() throws ColaVaciaException { if (vacia()) throw new ColaVaciaException(); return elementos[frente]; } public void inserta(Object elemento) { post = (post+1)%(max+1); elementos[post]=elemento; } public void suprime() throws ColaVaciaException{ if (vacia()) throw new ColaVaciaException(); frente = (frente+1)%(max+1); } } // fin clase Cola
  • 31. NAC © aguaszoft@outlook.es 31 Basada en referencias 1 package colaSimpleEnlazada; import colaException.*; public class Cola implements colaInterface.Cola { class Celda { Object elemento; Celda sig; } private Celda frente,post; public Cola() { frente = new Celda(); frente.sig = null; post = frente; } public boolean vacia() { return (frente==post); }
  • 32. NAC © aguaszoft@outlook.es 32 Basada en referencias 2 public Object primero() throws ColaVaciaException { if (vacia()) throw new ColaVaciaException(); return frente.sig.elemento; } public void inserta(Object elemento) { post.sig = new Celda(); post = post.sig; post.elemento = elemento; post.sig = null; } public void suprime() throws ColaVaciaException{ if (vacia()) throw new ColaVaciaException(); frente = frente.sig; } } // fin clase Cola
  • 33. NAC © aguaszoft@outlook.es 33 Comparación • Los criterios descritos en listas son también válidos para las implementaciones de colas. • La elección de una implementación u otra dependerá de los requerimientos de la aplicación en la que se use. • Es posible obtener representaciones para colas que permiten operaciones eficientes con tiempos de ejecución optimizados.
  • 34. NAC © aguaszoft@outlook.es 34 COLAS ESPECIALES  Dicolas  Las eliminaciones e inserciones pueden realizarse en ambos extremos de la lista.  Es como tener dos colas en una sola, cada una con su propio sentido. Colas de Prioridad  Es una cola a cuyos elementos se les ha asignado una prioridad, de forma que el orden en que los elementos son procesados sigue las siguientes reglas: El elemento con mayor prioridad es procesado primero. Dos elementos con la misma prioridad son procesados según el orden en que fueron introducidos en la cola.
  • 35. NAC © aguaszoft@outlook.es 35 Colas de Prioridad  Existen dos métodos para la representación de colas de prioridad:  Tener la cola siempre ordenada de acuerdo a las prioridades de sus elementos y sacar cada vez el primer elemento de ésta, es decir, el de mayor prioridad. En este caso, cuando se introduce un elemento en la cola, debe insertarse en el lugar correspondiente de acuerdo a su prioridad.  Insertar los elementos siempre al final de la cola, y cuando se va a sacar un elemento, buscar el que tiene mayor prioridad.
  • 36. NAC © aguaszoft@outlook.es 36 Interface Colas de Prioridad  La interface en Java del TDA Cola de Prioridad puede ser la siguiente: package colaPrioridadInterface; import colaException.*; public interface ColaPrioridad { public boolean vacia(); public Object primero() throws ColaVaciaException; public int primero_prioridad() throws ColaVaciaException; public void inserta(Object elemento, int prioridad); public void suprime() throws ColaVaciaException; } // fin interface ColaPrioridad
  • 37. NAC © aguaszoft@outlook.es 37 Implementación Cola de Prioridad package colaPrioridadSimpleEnlazada; import colaException.*; public class ColaPrioridad implements colaPrioridadInterface.ColaPrioridad { class Celda { Object elemento; int prioridad; Celda sig; } private Celda cola; public ColaPrioridad() { cola = new Celda(); cola.sig = null; }
  • 38. NAC © aguaszoft@outlook.es 38 Implementación Cola de Prioridad public boolean vacia() { return (cola.sig==null); } public Object primero() throws ColaVaciaException { if (vacia()) throw new ColaVaciaException(); return cola.sig.elemento; } public int primero_prioridad() throws ColaVaciaException { if (vacia()) throw new ColaVaciaException(); return cola.sig.prioridad; } public int primero_prioridad() throws ColaVaciaException { if (vacia()) throw new ColaVaciaException(); return cola.sig.prioridad; }
  • 39. NAC © aguaszoft@outlook.es 39 Implementación Cola de Prioridadpublic void inserta(Object elemento, int prioridad) { Celda p,q; boolean encontrado = false; p = cola; while((p.sig!=null)&&(!encontrado)) { if (p.sig.prioridad<prioridad) encontrado = true; else p = p.sig; } q = p.sig; p.sig = new Celda(); p = p.sig; p.elemento = elemento; p.prioridad = prioridad; p.sig = q; } public void suprime() throws ColaVaciaException { if (vacia()) throw new ColaVaciaException(); cola = cola.sig; }
  • 40. NAC © aguaszoft@outlook.es 40 Java Class Queue  Constructor Queue() Metodos java.lang.Object dequeue() remueve y retorna lel item de la cabecera de la cola Void enqueue(java.lang.Objectitem) añade el item especificado al final de la cola Boolean isEmpty() Retorna verdadero cuando la cola es vacía Int size() Retorna el numero de elementos que estan en la cola java.lang.String toString() retorna un String que representa el contenido de la cola
  • 41. NAC © aguaszoft@outlook.es 41 Aplicación Simulación de cajas y cajeros El modelo de simulación examinar la ocurrencia de eventos. Los principales objetos dinámicos son los procesos. Los principales objetos pasivos son los recursos. Dos parámetros importantes: tiempo de servicio y tiempo de llegada de los clientes.
  • 42. NAC © aguaszoft@outlook.es 42 Proceso de llegada •Si el nº de clientes que llegan es finito o infinito •Si se tiene uno o varios tipos de clientes •Si se tiene uno o varios tipos de demanda distintos •Si las llegadas son deterministicas o estocasticas •Si la tasa de llegada depende de la longitud de la cola
  • 43. NAC © aguaszoft@outlook.es 43 Proceso del servidor - cajero •Cuantos servidores estan disponibles al mismo tiempo para los mismos clientes con demandas identicas. •Si hay uno o varios tipos de servidores •Si la tasa de servicio debe ser constante o dependiente de las exigencias del cliente •Si el tiempo de servicio debe ser fijo (deterministico) o estocastico
  • 44. NAC © aguaszoft@outlook.es 44 Aplicación Simulación cajas y colas • Condiciones: • Numero de cajas de 1 .. 5 • El usuario determina cuantas caja desea • Cada caja tiempo T1 .. T5 tiempo atención • Numero de colas de 1 .. 5 • EL usuario determina cuantas colas desea • Arribo de clientes • Cada cola tiempo A1 .. A5 tiempo de arribo
  • 45. NAC © aguaszoft@outlook.es 45 Aplicación Simulación cajas y colas 2 • Aplicación • Modo gráfico • Condiciones anteriores • Facilidad de uso • Conclusiones al usuario • Numero óptimo de cajeros • Numero óptimo de colas
  • 46. NAC © aguaszoft@outlook.es 46 LISTAS DOBLES • Descripción • A una lista simplemente ligada • Complementarla con un acceso “BACK” • Orientación FRONT es lista normal • Orientación BACK es lista reversa • Utilización • Es más óptimo para determinar elementos anterior y siguiente • El acceso “back” permite regenerar lista • Óptimo para orden ascendente / descendente Front Back
  • 47. NAC © aguaszoft@outlook.es 47 LISTAS DOBLES • OPERACIONES: • MAKENULL(L) Inicializa cada sentido a NULL • INSERT(L, p, e) p referente desde Front • DELETE(L, p) p referente desde Front • FIRST(L) Front(L) • END(L) Back(L) • PRINT(L, s) s sentido de impresión • s puede ser front o back • REPAIR(L) reparar referencias o cursores perdidos
  • 48. NAC © aguaszoft@outlook.es 48 LISTAS CIRCULARES • Definición: • No existe fin de lista • Existe un indicador de inicio de lista • El primer nodo es el siguiente del último • Ejemplo: • Atención de procesos “multitarea” a1 a2 ai+1 ai ... ... L1 an
  • 49. NAC © aguaszoft@outlook.es 49 LISTAS CIRCULARES • OPERACIONES: • MAKENULL(L) Crea lista vacía • FIRST(L) Referencia inicio de L • END(L) Último elemento ingresado • INSERT(L, p, e) Posición referencial desde L • DELETE(L,p) Posición referencial desde L • NEXT(L,p) Posición referencial desde L • PREVIOUS(L,p) Posición referencial desde L • PRINT(L) Secuencia infinita de elementos • Es necesario indicador de salida
  • 50. NAC © aguaszoft@outlook.es 50 DOBLES CIRCULARES • Definición: • Es la combinación de lista circular con lista doble • Permite atención de procesos front – back • Utilizada en S.O. Atención de CPU • Es segura y óptima a1 a2 ai+1 ai ... ... L1 an
  • 51. NAC © aguaszoft@outlook.es 51 DOBLES CIRCULARES • OPERACIONES: • MAKENULL(L) Las referencias se inicializan en null • FIRST(L) Referencia desde L1 • END(L) Último elemento ingresado • INSERT(L, p, e) p considerado desde L1 • DELETE(L,p) p considerado desde L1 • PRINT(L, s) s sentido front / back • NEXT(L, p, s) • PREVIOUS(L, p, s) NODO 3