190 likes | 547 Views
Pilas y Colas. Estructuras de Datos. Pilas. Son estructuras utilizadas muy a menudo como herramientas de programación de tipo LIFO (Last in-First out) Permiten el acceso solo a un elemento a la vez: el último elemento insertado
E N D
Pilas y Colas Estructuras de Datos
Pilas • Son estructuras utilizadas muy a menudo como herramientas de programación de tipo LIFO (Last in-First out) • Permiten el acceso solo a un elemento a la vez: el último elemento insertado • La mayoría de los procesadores utilizan una arquitectura basada en pilas
Pilas - Operaciones • Básicamente poseen dos operaciones primarias: • Push: inserta la data en el tope de la pila • Pop: remueve la data del tope de la pila
Pilas de libros Push
Pilas de libros Pop
Pilas Implementadas en listas Constructores: Push (Insertar al inicio) Pop (Eliminar al inicio) Selectores: Pila-Vacia? (El apuntado Cabeza es Nul?) Top (Mostrar el primero)
Pilas Implementadas en listas public int Peek(){ Cnodo nodo; int dato; nodo = getCabeza(); dato = nodo.getIData(); return dato;} public boolean PilaVacia(){ return ( EstaVacia() );} public void ImprimePila(){ ImprimeLista();} } public class CPilaL extends CListaSimple{ public CPilaL(){super();} public void Push( Cnodo nuevo ){ InsertaPrimero(nuevo);} public Cnodo Pop(){ Cnodo nodo; nodo = EliminarPrimero(); return nodo;}
Pilas Implementadas en Vectores - Algoritmos PilaVacia( S ) If top( S ) = 0 return true Else return false Push( S, x ) Top( S ) <– Top( S ) + 1 S[ top( S ) ] <– x Pop( S ) If PilaVacia error else Top( S ) <– Top( S ) - 1 return S[ Top( S ) + 1 ]
Pilas - Eficiencia • El tiempo de ejecución de las operaciones primarias de una pila no depende del tamaño de la pila • Push y Pop se realizan en tiempo constante O(1) - no es necesario hacer ninguna comparación
Colas • Son estructuras de datos de tipo FIFO (First in-First out) • Simulan una cola de personas en el cine • Las colas son herramientas de programación como las pilas
Colas - Operaciones • Operaciones primarias: • Encolar: agrega un nuevo dato al final de la cola • Desencolar: elimina un dato del principio de la cola
Colas - Operaciones Encolar
Colas - Operaciones Desencolar
ColasImplementadas en listas Constructores: Encolar (Insertar al final) Desencolar (Eliminar al inicio) Selectores: Cola-Vacia? (El apuntado Cabeza es Nil?) Primero-Cola (Mostrar el primero)
ColasImplementadas en Vectores - Algoritmos Desencolar( Q ) x <– Q[ Cabeza( Q ) ] if Cabeza( Q ) = Length( Q ) Cabeza( Q ) <– 1 else Cabeza( Q ) <– Cabeza( Q ) + 1 return x Encolar( Q, x ) Q[ Fin( Q ) ] <– x if Fin( Q ) = length( Q ) Fin( Q ) <– 1 else Fin( Q ) <– Fin( Q ) + 1
Colas - Eficiencia • El tiempo de ejecución de las operaciones primarias de una colas no depende del tamaño de la cola • Encolar y Desencolar se realizan en tiempo constante O(1) - no es necesario hacer ninguna comparación
3 2 1 5 Cola doble enlace La mejor implementación de cola, es con una lista, donde se tenga un apuntador a la cabeza y uno al último de la lista. Cola doble Cola Cabeza Null Null