Sei sulla pagina 1di 23

PILAS Y COLAS

Daniel Jose Ruiz Gutierrez

PILAS

Las pilas son estructuras de datos que tienes dos


operaciones bsicas: push (para insertar un elemento) y
pop (para extraer un elemento). Su caracterstica
fundamental es que al extraer se obtiene siempre el
ltimo elemento que acaba de insertarse. Por esta razn
tambin se conocen como estructuras de datos LIFO
(del ingls Last In First Out).

OPERACIONES CON PILAS

PUSH (inserter): Agrega un elementos a la pila en el extremo


llamado tope.
POP (remover): Remueve el elemento de la pila que se encuentra en
el extremo llamado tope.
VACIA: Indica si la pila contiene o no contiene elementos.
LLENA: Indica si es posible o no agregar nuevos elementos a la
pila.

REPRESENTACIN DE PILAS

Usando arreglos: Define un arreglo de una dimensin (vector) donde


se almacenan los elementos.
0
5

TOPE: Apunta hacia el elemento que se encuentra en el extremo de


la pila. (inicialmente es -1).

Ejemplo
Inicio:

Insertar

Insertar

Insertar

Eliminar

A:

B:

C:

elemento

C
A
Tope

-1

Tope

Tope

Tope

Tope

public class Stack {


private Vector items;
public Stack() {
items = new Vector(10);
}
public Object push(Object item){
items.addElement(item);
return item;
}
public synchronized Object pop(){
int len = items.size();
Object obj = null;
if (len == 0) throw new EmptryStackException();
obj = items.elementAt(len-1);
items.removeElementAt(len 1);
return obj;
}
public boolean isEmpty() {
if (items.size == 0) return true;
else return false;
}
}

IMPLEMENTACIN
USANDO UN VECTOR

Aplicaciones de Pilas
EXPRESIONES ARITMETICAS:
Una expresin aritmtica contiene constantes, variables
y operaciones con distintos niveles de precedencia.

OPERACIONES :
^ potencia
*/ multiplicacin, divisin
+,- suma, resta

NOTACIONES
NOTACION INFIJA:
Los operadores aparecen en medio de los operando.
A + B, A 1, E/F, A * C , A ^ B , A + B + C, A+B-C

NOTACION PREFIJA:
El operador aparece antes de los operando.
+ AB, - A1, /EF, *AC, ^AB, +AB+C, +AB-C

NOTACION POSTFIJA:
El operador aparece al final de los operando.
AB+, A1-, EF/, AC*, AB^, AB+C+, AB+C

PASOS PARA EVALUAR UNA EXPRESION:

CONVERTIR A POSTFIJO: convertir la expresin en


notacin infijo a notacin postfijo

EVALUAR LA EXPRESION POSTFIJA: usar una pila


para mantener los resultados intermedios cuando se
evala la expresin en notacin posfijo.

REGLAS PARA CONVERTIR EXPRESION INFIJA A POSTFIJA

Se crea un string resultado donde se almacena la expresin en postfijo.


1.- Los operandos se agregan directamente al resultado
2.- Un parntesis izquierdo se mete a la pila y tiene prioridad o precedencia cero (0).
3.- Un parntesis derecho saca los elementos de la pila y los agrega al resultado hasta sacar un
parntesis izquierdo.
4.- Los operadores se insertan en la pila si:
a) La pila esta vaca.
b) El operador en el tope de la pila tiene menor precedencia.
c) Si el operador en el tope tiene mayor precedencia se saca y agrega al resultado (repetir
esta operacin hasta encontrar un operador con menor precedencia o la pila este vaca).
5.- Cuando se termina de procesar la cadena que contiene la expresin infijo se vaca la pila
pasando los elementos al resultado.

EJEMPLOS

Convertir las siguientes expresiones infijas a posfijo


A +B*C-D
A * ((B-C) / 2))
((X-Z)*(Y+W))/X+Y

Al finalizar el recorrido, el resultado estar en la pila de valores


Recorrer la expresion de izquierda a derecha
1.
Si es un operando
almacenar el valor en la pila de valores

1.

Si es un operador:

2.
1.

Obtener dos operandos de la pila de valores

2.

Aplicar el operador
Almacenar el resultado en la pila de valores

3.

REGLAS PARA EVALUAR UNA EXPRESION


POSTFIJA

COLAS

Definition. Es una lista lineal de elementos en la que las


operaciones de insertar y eliminar se realizan en diferentes extremos
de la cola.
Trabajan con filosofa FIFO ( First In - First out), el primer
elemento en entrar es el primer elemento en salir.
Ejemplos:
Cola

de automviles esperando servicio en una gasolinera


Cola de clientes en una ventanilla del banco para pagar un servicio
Cola de programas en espera de ser ejecutados por una computadora.

TIPOS DE COLAS:

Cola simple: Estructura lineal donde los elementos salen en el mismo


orden en que llegan.

Cola circular: Representacin lgica de una cola simple en un arreglo.

Cola de Prioridades: Estructura lineal en la cual los elementos se insertan


en cualquier posicin de la cola y se remueven solamente por el frente.

Cola Doble (Bicola): Estructura lineal en la que los elementos se pueden


aadir o quitar por cualquier extremo de la cola (cola bidireccional).

OPERACIONES BSICAS EN COLAS


SIMPLES
Insertar.- Almacena al final de la cola el elemento que se recibe como
paramtro.
Eliminar.- Saca de la cola el elemento que se encuentra al frente.
Vaca.- Regresa un valor booleano indicando si la cola tiene o no elementos
(true si la cola esta vacia, false si la cola tiene al menos un elemento).
Llena.- Regresa un valor booleano indicando si la cola tiene espacio
disponible para insertar nuevos elementos ( true si esta llena y false si
existen espacios disponibles).

IMPLEMENTACIN DE COLAS

Arreglo

con frente fijo.


con frente movible.
circular.

Listas ligadas

Representacin usando arreglos


Las colas pueden ser representadas en arreglos de
una dimensin (vector) manteniendo dos variables
que indiquen el FRENTE y FINAL de los elementos
de la cola.
0

Frente

3
S

4
D

5
Z

Final

Cuando la cola esta vaca las variables frente y final son nulos y
no es posible remover elementos.

Cuando la cola esta llena ( frente = 0 y final = n-1) no es posible


insertar elementos nuevos a la cola.

Cuando se remueven elementos el frente puede incrementarse


para apuntar al siguiente elemento de la cola (implementacion con
frente movil) o los elementos en la cola pueden desplazarse una
posicion adelante (implementacin con frente fijo)

Recuperacin de espacio: Cuando no hay espacios libres al final


del arreglo los elementos pueden ser desplazados para desocupar
posiciones en un extremo del arreglo o se puede manejar una
estructura circular.

Ejemplo: Suponer que usamos un arreglo de 5 posiciones. Usando la


representacin de frente fijo y frente movible.
Frente

A B C

Final
Al remover un elemento:
Frente

Final

B C
Frente fijo

Frente
B

Final
C

Frente movible

Frente

Final

Frente

B C

Final

B C

Insertar elemento D:
Frente

Final

B C D

Frente

Final

B C D

Frente

Insertar elemento E:
Final
Frente

B C D E

Frente

B C D E

Insertar elemento F:
Final
Frente

B C D E

Final

Insertar elemento G:

B C D E

Error: Cola llena!!!!

Final
F

Frente

COLA CIRCULAR

Es una representacin lgica


de la cola en un arreglo.
El frente y final son
movibles.
Cuando el frente o final
llegan al extremo se regresan
a la primera posicin del
arreglo.

Cola
inicial

Final

B C D
Frente Final

Remover

C D
Frente

Final

Insertar E
C D E
Final

Frente

Insertar F
F

C D E

Representacin de colas:
Usando memoria esttica: arreglos con tamao fijo y
frente fijo o movible o represntacinFinal
circular.

Frente

B C D E
0

F
4

Usando memoria dinmica: Listas ligadas. Final


B

Frente

Potrebbero piacerti anche