Principios de Computadoras II - Universidad Nacional del Sur

Anuncio
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras
Universidad Nacional del Sur
Pilas y Colas
Ricardo Coppo
rcoppo@uns.edu.ar
Tipo de datos abstracto: Pila
Una pila es una estructura en la que el
acceso se limita al último elemento insertado.
Es comparable con una pila de monedas,
diarios, dinero, etc.
El último elemento ingresado es el primer
elemento a quitar (LIFO)
Pilas y Colas
Ricardo Coppo
2
Principios de Computadoras II
Universidad Nacional del Sur
Operaciones con pilas
push( x )
pop()
Inserta el elemento x al tope de la pila
Retorna el elemento que se encuentra en el tope
de la pila y lo elimina de la estructura
top()
Retorna el elemento que se encuentra en el tope
de la pila, no lo quita de la estructura
Pilas y Colas
Ricardo Coppo
3
Principios de Computadoras II
Universidad Nacional del Sur
Operaciones con pilas
clear()
Inicializa una pila vacía. Si la pila ya existe
elimina todos los elementos almacenados
en ella
isEmpty()
Retorna una variable lógica = true si la lista está
vacía.
Pilas y Colas
Ricardo Coppo
4
Principios de Computadoras II
Universidad Nacional del Sur
Interfase Pila
Pilas y Colas
Ricardo Coppo
5
Principios de Computadoras II
Universidad Nacional del Sur
Implementación de Pilas
Existen dos técnicas tradicionales para
implementar pilas
Usar un arreglo, y un índice que indica el tope
Usar una lista enlazada, con inserción y quite solo
en la cabeza de la lista.
Pilas y Colas
Ricardo Coppo
6
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
crece
tope
(prox)
Pilas y Colas
Ricardo Coppo
7
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
Pilas y Colas
Ricardo Coppo
8
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con listas enlazadas
Pilas y Colas
Ricardo Coppo
9
Principios de Computadoras II
Universidad Nacional del Sur
Ejemplo de uso
Pilas y Colas
Ricardo Coppo
10
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con listas enlazadas
deque
enqueue
Pilas y Colas
Ricardo Coppo
11
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con Listas Enlazadas
Pilas y Colas
Ricardo Coppo
12
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con Listas Enlazadas
Pilas y Colas
Ricardo Coppo
13
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con listas enlazadas
Pilas y Colas
Ricardo Coppo
14
Principios de Computadoras II
Universidad Nacional del Sur
Ejemplo de uso
Pilas y Colas
Ricardo Coppo
15
Principios de Computadoras II
Universidad Nacional del Sur
Aplicaciones típicas con pilas
Invertir una cadena de símbolos
Evaluación de expresiones polacas inversas
Invocaciones de subprogramas
Equilibrio de paréntesis en expresiones
Pilas y Colas
Ricardo Coppo
16
Principios de Computadoras II
Universidad Nacional del Sur
Tipo de datos abstracto: Cola
Una cola es una estructura en la que el acceso se
limita a la inserción en el último lugar y el quite del
primero.
Es comparable con una cola de personas en el
banco, una cola de trabajos pendientes, etc.
El primer elemento ingresado es el primero en salir
de la estructura (en orden de llegada). Estructura
FIFO – First In First Out.
Pilas y Colas
Ricardo Coppo
17
Principios de Computadoras II
Universidad Nacional del Sur
Operaciones con colas
insertar(x) – enqueue(x)
quitar() - dequeue()
Insertar un elemento al final de la cola
Retirar el elemento que se encuentra al principio de la cola
primero()
Observar que elemento se encuentra al principio de la cola
sin modificar la información almacenada
Pilas y Colas
Ricardo Coppo
18
Principios de Computadoras II
Universidad Nacional del Sur
Operaciones con colas
isEmpty()
Retorna un booleano que indica si la cola está
vacía
clear()
Inicializa una cola. Si ya posee elementos los
elimina.
Pilas y Colas
Ricardo Coppo
19
Principios de Computadoras II
Universidad Nacional del Sur
Interfase Cola
Pilas y Colas
Ricardo Coppo
20
Principios de Computadoras II
Universidad Nacional del Sur
Implementación de Colas
Existen dos técnicas tradicionales para
implementar colas
Usar un arreglo, y dos índices (principio y fin) que
“rotan” o se “reciclan” sobre la estructura
Usar una lista enlazada, con inserción al final y
quite al principio de la lista.
Pilas y Colas
Ricardo Coppo
21
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
fin
nroElementos = 0
tope
Para insertar al final, incrementar fin y almacenar.
Para quitar, retirar primer elemento y luego avanzar tope.
Pilas y Colas
Ricardo Coppo
22
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
insertar( a )
fin
a
nroElementos = 1
tope
Para insertar al final, incrementar fin y almacenar.
Para quitar, retirar primer elemento y luego avanzar tope..
Pilas y Colas
Ricardo Coppo
23
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
insertar( b )
fin
a
b
nroElementos = 2
tope
Para insertar al final, incrementar fin y almacenar.
Para quitar, retirar primer elemento y luego avanzar tope.
Pilas y Colas
Ricardo Coppo
24
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
insertar( c )
fin
a
b
c
nroElementos = 3
tope
Para insertar al final, incrementar fin y almacenar.
Para quitar, retirar primer elemento y luego avanzar tope.
Pilas y Colas
Ricardo Coppo
25
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglo
quitar()
fin
a
b
c
nroElementos = 2
tope
Para insertar al final, incrementar fin y almacenar.
Para quitar, retirar primer elemento y luego avanzar tope.
Pilas y Colas
Ricardo Coppo
26
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
quitar()
fin
a
b
c
nroElementos = 1
tope
Para insertar al final, incrementar fin y almacenar.
Para quitar, retirar primer elemento y luego avanzar tope.
Pilas y Colas
Ricardo Coppo
27
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
quitar()
fin
a
b
c
tope
nroElementos = 0
Para insertar al final, incrementar fin y almacenar.
Para quitar, retirar primer elemento y luego avanzar tope.
Pilas y Colas
Ricardo Coppo
28
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
fin
a
b
a
c
tope
b
nroElementos = 2
Cuando se llega al final del vector se reciclan los indices
(Implementación circular)
Pilas y Colas
Ricardo Coppo
29
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con arreglos
insertar( c )
fin
c
b
a
c
tope
b
nroElementos = 3
Cuando se llega al final del vector se reciclan los indices
(Implementación circular)
Pilas y Colas
Ricardo Coppo
30
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con listas enlazadas
Pilas y Colas
Ricardo Coppo
31
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con listas enlazadas
Pilas y Colas
Ricardo Coppo
32
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con listas enlazadas
Pilas y Colas
Ricardo Coppo
33
Principios de Computadoras II
Universidad Nacional del Sur
Implementación con listas enlazadas
Pilas y Colas
Ricardo Coppo
34
Principios de Computadoras II
Universidad Nacional del Sur
Aplicaciones de colas
Procesamiento de transacciones comerciales
que actualizan una base de datos en un
servidor
Planificador de procesos en un sistema de
multiprogramación
Simulacion comandado por eventos
Pilas y Colas
Ricardo Coppo
35
Principios de Computadoras II
Universidad Nacional del Sur
Para investigar…
La biblioteca de Java posee clases para
operar con listas enlazadas, pilas y colas.
Investigue a las clases LinkedList, Stack,
Queue y Deque.
Compare los métodos de las clases de
biblioteca con las vistas en clase. ¿Qué
funcionalidad adicional incorporan?
Pilas y Colas
Ricardo Coppo
36
Principios de Computadoras II
Universidad Nacional del Sur
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras
Universidad Nacional del Sur
Pilas y Colas
Ricardo Coppo
rcoppo@uns.edu.ar
Descargar