8 estructuras de datos: pilas y filas 8.1 pilas orden

Anuncio
Introducción a la Programación − Notas de Clase
Pilas y Filas
8 ESTRUCTURAS DE DATOS: PILAS Y FILAS
8.1 PILAS
En una pila o stack almacenamos elementos, que son todos del mismo tipo, aun cuando, obviamente, puedan no
tener necesariamente el mismo valor. Es decir, se trata de una estructura cuyo tipo base es homogéneo.
La pila es una estructura que es fácilmente identificable ya que comparte muchas de las características de las
pilas que se encuentran en la vida diaria como por ejemplo una pila de libros, una pila de platos, etc.
ORDEN CRONOLÓGICO
En una pila, el orden de llegada o inserción de los elementos es inverso al de salida o supresión de los mismos.
Es decir que el primer elemento insertado será el último en ser suprimido y que el último insertado será el primero
en ser suprimido.
Esto es así si se piensa en una pila de platos, el primero que se apiló es el que está abajo de todo en la pila, en la
base de la pila y solo se lo podrá sacar después de sacar, antes, todos los que están sobre él, es decir será el que
saldrá último de la pila. Por el contrario, el último que se apiló, es el que está en el tope de la pila y el primero que se
podrá sacar de la misma.
Este orden de los elementos de una pila puede expresarse a través de las siglas en inglés de las operaciones y su
orden, de la siguiente manera: LIFO (Last In First Out).
CAPACIDAD
La capacidad teórica de las pilas es dinámica, es decir que las pilas crecen con las inserciones y disminuyen con
las supresiones.
OPERACIONES
Se pueden realizar las operaciones de:
Inserción: solamente en el tope de la pila, es decir sobre el último elemento ingresado. En inglés, esta operación
es conocida con el nombre de push.
Supresión: solamente del tope de la pila, es decir del último elemento ingresado. En inglés, esta operación es
conocida con el nombre de pop.
Inspección: solamente del tope de la pila, es decir del último elemento ingresado.
Es importante remarcar el hecho que en la pila solo puede operarse sobre un elemento distinguido: el que se
encuentra en el tope de la misma, es decir sobre aquél elemento que ingresó último y que es el primero que se
encuentra disponible para salir. La pila tiene, entonces, un selector implícito, ya que es el elemento que se encuentra
en el tope sobre el que se puede operar. No hay necesidad de ninguna referencia explícita al elemento, ya que las
operaciones se hacen siempre sobre la misma posición de la pila: el tope.
Dado que las pilas son estructuras dinámicas, es necesario además contar dos con predicados lógicos para
controlar el desborde y el desfonde de la estructura.
U.N.S.L. Argentina
86
Departamento de Informática
Introducción a la Programación − Notas de Clases
Pilas y Filas
REPRESENTACIÓN GRÁFICA
Por supuesto la representación gráfica puede hacerse como se desee, verticalmente en el papel, con el tope arriba
o abajo; horizontalmente en el papel, con el tope a la derecha o a la izquierda; o inclusive oblicuamente. En el caso
de la Figura 8.1, la pila está representada verticalmente, con el tope arriba. En la pila de la Figura 8.1(a), el orden en
que llegaron los elementos (fueron insertados en la pila) fue ‘f’, ‘R’, ‘+’, ‘Y’, ‘z’, quedando ‘z’ en el tope.
El primer elemento a ser suprimido será, en consecuencia, ‘z’, como se ve en la Figura 8.1(b).
‘*’
‘z’
‘Z’
‘z’
tope
push
pop
‘Y’
‘Y’
‘+’
‘+’
‘+’
‘R’
‘R’
‘R’
‘f’
‘f’
‘f’
(a)
(b)
‘Y’
tope
.
tope
(c)
Figura 8.1. Una pila de caracteres
8.2 FILAS O COLAS
En una fila o cola almacenamos elementos que son todos del mismo tipo aun cuando, obviamente, puedan no
tener necesariamente el mismo valor. Se trata, en consecuencia, de una estructura cuyo tipo base es homogéneo.
La fila es una estructura que es fácilmente identificable ya que comparte muchas de las características de las filas
o colas que se encuentran en la vida diaria, como por ejemplo una cola de personas esperando el colectivo, una cola
en el cajero del supermercado, etc.
ORDEN CRONOLÓGICO
En una fila, el orden de llegada o inserción de los elementos es el mismo que el de salida o supresión de los
mismos. Es decir que el primer elemento insertado será, también, el primero en ser suprimido.
Esto es así, si pensamos en una cola de personas esperando, para ser atendidas, frente a una ventanilla de un
cajero en un banco (¡siempre y cuando las personas sean respetuosas del orden y no ‘salten’ lugares en la cola!). La
primera persona en llegar (inserción) será la que está primera en la cola y será la primera en ser atendida (supresión).
De ahí que en las filas o colas sea posible hablar de dos elementos distinguidos: el primero y el último elemento.
Es precisamente sobre estos elementos distinguidos donde podemos operar con una fila.
Este orden de los elementos de una fila puede expresarse a través de las siglas en inglés de las operaciones y su
orden, de la siguiente manera: First In First Out (FIFO).
U.N.S.L. Argentina
87
Departamento de Informática
Introducción a la Programación − Notas de Clases
Pilas y Filas
CAPACIDAD
La capacidad teórica de las colas es dinámica, es decir que las filas crecen, con las inserciones y disminuyen con
las supresiones.
OPERACIONES
Se pueden realizar las operaciones de:
Inserción, después del último elemento ingresado.
Supresión, del primer elemento ingresado.
Inspección, del primer elemento ingresado.
Es importante remarcar el hecho que en las filas sólo puede suprimirse e inspeccionarse el primer elemento
ingresado y solo se inserta un nuevo elemento después del último elemento ingresado.
La fila tiene dos selectores implícitos, ya que es el elemento que se encuentra en el primer lugar de la misma
sobre el que se puede operar para eliminarlo o inspeccionarlo y se puede insertar sólo después del elemento que se
encuentra en el último lugar. No hay necesidad de ninguna referencia explícita a un elemento, ya que las
operaciones se hacen siempre sobre alguna de dos elementos distinguidos de la fila: o el primero o después del
último.
Como las filas son estructuras dinámicas, es necesario además contar dos con predicados lógicos para controlar
el desborde y el desfonde de la estructura.
REPRESENTACIÓN GRÁFICA
La fila de la Figura 8.2 está representada gráficamente de derecha a izquierda, en este caso el orden de llegada
(inserción) de los elementos fue: ‘Z’, ‘x’, ‘T’, ‘*’, ‘F’; es decir ‘Z’ fue el primero en llegar (insertado)
y‘F’el último en llegar (insertado). Consecuentemente ‘Z’ será el primero en salir (suprimido) y ‘F’ será el
último en salir (suprimido).
‘Z’ ‘x’ ‘T’ ‘*’ ‘F’
primero
ultimo
Figura 8.2. Una fila de caracteres.
Por supuesto, la representación gráfica puede hacerse como se desee, verticalmente en el papel, con el primero
arriba o abajo; horizontalmente en el papel, con el primero a la derecha o a la izquierda; o inclusive oblicuamente.
U.N.S.L. Argentina
88
Departamento de Informática
Descargar