Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pilas y Colas
Conceptos Básicos
Las pilas y las colas quizás sean las estructuras de datos más simples de
entender y esto se debe a sus analogías con la vida real. Las pilas (stacks) y las
colas (queues) son también una colección finita (o al menos por el momento) con
dos operaciones principales: agregar y sacar elementos, donde la diferencia entre
éstas radica meramente en la forma en la que las operaciones funcionan.
Pilas
Las pilas tienen dos operaciones básicas: push (para insertar un elemento) y
pop (para extraer un elemento). Su característica fundamental es que al extraer se
obtiene siempre el último elemento que acaba de insertarse. Por esta razón
también se conocen como estructuras de datos LIFO (del inglés Last In First Out).
En cada momento solamente se tiene acceso a la parte superior de la pila, es
decir, al último objeto apilado (denominado TOS, Top of Stack en inglés). La
operación retirar permite la obtención de este elemento, que es retirado de la pila
permitiendo el acceso al anterior (apilado con anterioridad), que pasa a ser el
último, el nuevo TOS.
Representación de Pilas
Al utilizar arreglos para implementar pilas se tiene la limitación de que se debe
reservar el espacio en memoria con anticipación. Una vez dado un máximo de
capacidad a la pila no es posible insertar un número de elementos mayor que el
máximo establecido. Si esto ocurre, en otras palabras si la pila está llena y se
intenta insertar un nuevo elemento, se producirá un error conocido como
desbordamiento –overflow.
Posibles soluciones
Una posible solución a este tipo de inconvenientes consiste en definir pilas de
gran tamaño, pero esto resultará ineficiente y costoso si solo se utilizarán algunos
elementos. No siempre es viable saber con exactitud el número de elementos a
tratar, y siempre existe la posibilidad de que ocurra un error de desbordamiento.
Aplicaciones de Pilas
o Navegador Web: Se almacenan los sitios previamente visitados –
Cuando el usuario quiere regresar (presiona el botón de retroceso),
simplemente se extrae la última dirección (pop) de la pila de sitios
visitados.
o Editores de texto: Los cambios efectuados se almacenan en una pila –
Usualmente implementada como arreglo – Usuario puede deshacer los
cambios mediante la operación “undo”, la cual extraer el estado del texto
antes del último cambio realizado.
La estructura Pila:
pop(&A)
Mostrar el elemento A
push(&A,elemento).
Colas
Suponiendo que los elementos son números enteros, una idea para
representar una cola en C/C++ es usar un arreglo para contener los
elementos y emplear otras dos variables para representar la parte frontal y trasera
de la cola.
La operación empty:
Colas Circulares
o El objetivo de una cola circular es aprovechar al máximo el espacio
del arreglo.
o La idea es insertar elementos en las localidades previamente
desocupadas.
o La implementación tradicional considera dejar un espacio entre el frente
y la cola.
Si se eliminan componentes quedan espacios disponibles en las primeras
posiciones del arreglo.
Operación similar puede efectuarse para la variable head cuando deba ser
incrementada en uno.
Si rear tiene valor N-1, al ser incrementada en uno (módulo N), tomará valor
cero.