You are on page 1of 18

IMPLEMENTACION DE PILAS Y COLAS USANDO

ARREGLOS

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). Una posible
implementacin mediante listas enlazadas sera insertando y extrayendo
siempre por el principio de la lista. Gracias a las pilas es posible el uso de
la recursividad (lo veremos en detalle en el tema siguiente). La variable
que llama al mismo procedimiento en el q est, habr que guardarla as
como el resto de variables de la nueva llamada, para a la vuelta de la
recursividad ir sacndolas , esto es posible a la implementacin de pilas.
Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia.
Por ejemplo, la gestin de ventanas en Windows (cuando cerramos una
ventana siempre recuperamos la que tenamos detrs). Otro ejemplo es la
evaluacin general de cualquier expresin matemtica para evitar tener
que calcular el nmero de variables temporales que hacen falta.
Operaciones Bsicas:
o PUSH: APILAR, METER
o POP: DESAPILAR, SACAR
o TOP: CIMA, TOPE

PUSH: (para insertar un elemento)


EXISTE SOLAMENTE UN LUGAR EN DONDE CUALQUIER ELEMENTO PUEDE SER
AGREGADO A LA PILA . DESPUS DE HABER INSERTADO EL NUEVO ELEMENTO , G
AHORA ES EL ELEMENTO EN LA CIMA .
POP: (para extraer un elemento)
BASTA INDICAR QUE SEA RETIRADO UN ELEMENTO. NO PODEMOS DECIR RETIRA
C, PORQUE C NO EST EN LA CIMA DE LA PILA.

EJEMPLO:

LA DINMICA DE LA PILA, ES DECIR, LA MANERA EN COMO ENTRAN Y SALEN LOS


DATOS A LA ESTRUCTURA DE DATOS SE DENOMINA LIFO(LAST IN, FIRST OUT).

IMPLEMENTACIN DE PILA :
UNA PILA ESTA CONFORMADA POR DOS ELEMENTOS:
UN ESPACIO SUFICIENTE PARA ALMACENAR LOS ELEMENTOS INSERTADOS EN LA
PILA.

UN ELEMENTO QUE INDIQUE CUL ES EL ELEMENTO EN LA CIMA DE LA PILA.


LA ESTRUCTURA PILA:
DEFINIR NUEVO TIPO DE ESTRUCTURA LLAMADO STACK CON TEM:

UN ARREGLO DE 0 A MXIMOS ELEMENTOS ENTEROS

TOP: UN NUMERO DE -1 A (MXIMOS 1)

FIN DE LA NUEVA ESTRUCTURA


ES POSIBLE ESCRIBIR UN CDIGO EN C++ QUE REPRESENTE LO ANTERIORMENTE
PROPUESTO.

IMPLEMENTACIN CON ARREGLOS:


o UNA PILA ES UNA COLECCIN ORDENADA DE OBJETOS.
o EN C++, LOS ARREGLOS PERMITEN ALMACENAR COLECCIONES ORDENADAS.
o LA DESVENTAJA DE IMPLEMENTAR UNA PILA MEDIANTE UN ARREGLO ES QUE
ESTA LTIMA ES DE TAMAO FIJO , MIENTRAS QUE USANDO PUNTEROS LA PILA
PUEDE SER DE TAMAO DINMICO.

Class Pila implements IPila{


Int tope= -1; public boolean vacia () {
Private int[] pila=new int[10]; return (tope== -1);
Final int MAX=9; }
Public booleanllena(){
Return(tope==MAX); public int pop (){
} if (this, vacia())then
Public void push (int elem){
If (this.llena()) then else{
else { int x =pila[tope];
tope ++; tope --;
pila[tope]=elem; return x ;
} }
} }
LAS OPERACIONES BSICAS DE UNA PILA SON:
1-EN LA PILA S, INSERTAR UN ELEMENTO E: PUSH(S,E).
2-RETIRAR UN ELEMENTO DE LA PILA S: POP(S).
3-VERIFICAR SI LA PILA S EST VACA: STACKEMPTY(S).
4-SABER CUL ES EL ELEMENTO EN LA CIMA DE LA PILA S: STACKTOP(S).

PUSH:
ESTA OPERACIN SIRVE PARA INSERTAR UN ELEMENTO E EN LA PILA S, LO
VAMOS A ESCRIBIR COMO: PUSH(S,E).

DESPUS DE HACER ESTA OPERACIN SUCEDE QUE : EL ELEMENTO EN LA CIMA


DE LA PILA S AHORA ES E.
POP:
STACKTOP :
STACKEMPTY :
Colas
Una cola es una coleccin de elementos homogneos
(almacenados en dicha estructura), en la misma se pueden
insertar elementos por uno de los extremos, llamado frente, y
retirar los mismos por el otro extremo, denominado final.
Es importante aclarar que, tanto el frente como el final de la cola,
son los nicos indicados para retirar e insertar elementos,
respectivamente. Esto nos indica que no podemos acceder
directamente a cualquier elemento de la cola, sino solo al
primero, o sea el que est o se encuentra en el frente, y no se
pueden insertar elementos en cualquier posicin sino solo por el
final, as el elemento insertado queda como ltimo.
Por esta razn la cola es denominada una estructura F.I.F.O., o
simplemente una lista F.I.F.O., esto representa el acrnimo de las
palabras inglesas first in, first out (primero en entrar, primero
en salir). Grficamente podemos representarla como:
La cola fue recin creada y esta vaca. (frente y final
apuntan FINAL FRENTE a nil).
Si ahora le ingresamos el elemento A, la misma quedar se la
siguiente manera:
Como A es el nico A elemento, frente y final apuntan a
l. FINAL nil FRENTE
Si a continuacin se ingresa el elemento B, el frente de la cola
continuar apuntando a A, pero ahora el final apuntar al
elemento recin ingresado.
B A El enlace se realiza desde el frente hacia el
final. FINAL nil FRENTE
Al retirar un elemento, el frente apuntar al siguiente del
elemento retirado y en el caso que la cola quedara vaca, frente y
final apuntarn a nil.
Tipos de colas :
Cola simple : Estructura lineal donde los elementos salen en el
mismo orden en q llegan .
Cola circular: Representacion 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 de las colas


simples :
Insertar: Almacena al final de la cola el elemento que se resibe como
parmetro.
Eliminar: Saca de la cola el elemento que se encuentra al frente.
Vacia: Regresa un valor booleano indicado si la cola tiene o no
elementos(true-si la cola esta vacia ,false si la cola tiene almenos un
elemento).
Llena : Regresa un valor booleano indicado si la cola tiene espacio
disponible para insertar nuevos elementos (true-si esta llena y false si
existen espacios disponibles .

Implementacin de cola :
De manera similar alas pilas ,las colas definen una estructura no estndar,
d manera que se debe crear un nuevo tipo de dado,el tipo de cola que
debe tener los siguientes elementos:
Un arreglo de n elementos de algn tipo especifico,puede incluso
ser un tipo estndar o no.
Un nmero que indica el elemento que esta enfrente de la cola .
Un nmero que indica el elemento que esta en la posicin trasera
de la cola .
IMPLEMENTACION CON ARREGLOS :

Representacin usando arreglos :


las colas se pueden representar en arreglos de una dimensin (vector )
manteniendo dos variables que indiquen el FRENTE Y EL FINAL de los
elementos de la cola .
Cunado 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 ala cola .

Cuando se remueven elementos el frente puede incrementarse


para apuntar al siguiente elemento de la cola (implementacin con
frente mvil ) o los elementos en la cola pueden desplazarse una
posicin 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.

COLAS CIRCULARES Y DOBLES :

COLAS DOBLES :
La bicola o doble cola es un tipo de cola especial que permiten la
insercin y eliminacin de elementos de ambos extremos de la cola.
Puede representarse a partir de un vector y dos ndices, siendo su
representacin ms frecuente una lista circular doblemente enlazada.
Esta estructura es una cola bidimensional en que las inserciones y
eliminaciones se pueden realizar en cualquiera de los dos extremos de
la bicola. Grficamente representamos una bicola de la siguiente
manera:

Existen dos variantes de la doble cola:

Doble cola de entrada restringida.


Doble cola de salida restringida.
La primera variante slo acepta inserciones al final de la cola, y la segunda
acepta eliminaciones slo al frente de la cola

Algoritmo de Inicializacin
F < -- 1
A <-- 0

Algoritmo para Insertar


Si A=mximo entonces
mensaje (overflow)
en caso contrario
A <--A+1
cola[A]<-- valor

Algoritmo para Extraer


Si F&gtA entonces
mensaje (underflow)
en caso contrario
mensaje (frente/atrs)
si frente entonces
x <-- cola[F]
F <-- F+1
en caso contrario
x <-- cola[A]
A <-- A-1

COLA CIRCULAR :

Una cola circular o anillo es una estructura de datos en la que los


elementos estn de forma circular y cada elemento tiene un sucesor y un
predecesor. Los elementos pueden cosultarse, aadirse y eliminarse
unicamente desde la cabeza del anillo que es una posicin distinguida.
Existen dos operaciones de rotaciones, una en cada sentido, de manera
que la cabeza del anillo pasa a ser el elemento sucesor, o el predecesor,
respectivamente, de la cabeza actual.
Para solucionar el problema de desperdicio de memoria se
implementaron las colas circulares, en las cuales existe un apuntador
desde el ltimo elemento al primero de la cola.
La representacin grfica de esta estructura es la siguiente:
La condicin de vaco en este tipo de cola es que el apuntador F sea igual a
cero.
Las condiciones que debemos tener presentes al trabajar con este tipo de
estructura son las siguientes:

OVER FLOW, CUANDO SE REALICE UNA INSERCIN.


UNDER FLOW, CUANDO SE REQUIERA DE UNA EXTRACCIN EN LA COLA.
VACIO

ALGORITMO DE INICIALIZACIN
F < -- 0
A<-- 0

ALGORITMO PARA INSERTAR


SI (F+1=A) (F=1 Y A=MXIMO) ENTONCES
MENSAJE (OVERFLOW)
EN CASO CONTRARIO
INICIO
SI A=MXIMO ENTONCES
A<--1
COLA[A]<-- VALOR
EN CASO CONTRARIO
A <--A+1
COLA[A]<-- VALOR
SI F=0 ENTONCES
F <-- 1
FIN

ALGORITMO PARA EXTRAER


SI F=0 ENTONCES
MENSAJE (UNDERFLOW)
EN CASO CONTRARIO
X <-- COLA[F]
SI F=A ENTONCES
F <-- 0
A<-- 0
EN CASO CONTRARIO
SI F=MXIMO ENTONCES
F <--1 EN CASO CONTRARIO F <-- F+1

OPERACIONES DE COLA :

You might also like