Sie sind auf Seite 1von 18

FILAS

Es una estructura de datos cuyos elementos se


insertan por un lado y se eliminan por otro, es decir
los elementos se eliminan en el mismo orden en
que se insertan. (PEPS= Primero en entrar, primero
en
salir).
FILA

A B C MAXFILA

1 2 3 4 5 6 7
frente final
Aplicaciones de las FILAS
El concepto de FILA est ligado a computacin.

Una aplicacin de ellas puede verse en las colas de


impresin, cuando hay una sola impresora para
atender a varios usuarios. En estos casos se forma una
cola con los trabajos que esperan para ser impresos,
los cuales se irn imprimiendo en el orden en que
fueron ingresando a la cola.

Otro caso de aplicacin en computacin es en los


sistemas de tiempo compartido, en donde varios
usuarios comparten recursos como el procesador, la
memoria, etc.. El sistema operativo asignar los
recursos en el orden en que fueron solicitndolos.
Formas de implementar una FILA:

a) Utilizando arreglos (memoria esttica)

b) Utilizando listas enlazadas (memoria dinmica)

Arreglos:

A B C MAXFILA

1 2 3 4 5 6 7
frente final
DESCRIPCION LOGICA DEL Tipo de Dato Abstracto
FILA:

OPERACIONES:
a) CREAR FILA: crea una fila vaca

b) FILA LLENA:
DESCRIPCION: verifica si una fila se encuentra llena
ENTRADAS: la fila que se va a verificar
SALIDAS: valor booleano que indica si la fila esta llena o no
PRECONDICION: la fila a verificar existe
POSTCONDICION: ninguna, la fila NO se modifica

c) FILA VACIA:
DESCRIPCION: verifica si una fila se encuentra vaca
ENTRADAS: la fila que se va a verificar
SALIDAS: valor booleano que indica si la fila esta vaca o no
PRECONDICION: la fila a verificar existe
POSTCONDICION: ninguna, la fila NO se modifica
d) INSERTAR:
DESCRIPCION: agrega un elemento en la Fila
ENTRADAS: la fila a la que se agregar el elemento y el
elemento a insertar
SALIDAS: la fila con un elemento adicional
PRECONDICION: la fila est creada y no est llena
POSTCONDICION: la fila queda con un elemento adicional
agregado por el extremo del FINAL de la fila

e) SACAR:
DESCRIPCION: elimina un elemento en la Fila
ENTRADAS: la fila a la que se va a quitar el elemento
SALIDAS: la fila con un elemento menos y el elemento que se
elimin
PRECONDICION: la fila esta creada y no esta vaca
POSTCONDICION: la fila queda con un elemento menos
eliminado por el extremo del FRENTE de la fila
Diseos para FILAS

1) Con FRENTE fijo: es necesario realizar corrimientos cada


vez que se elimine un elemento de la FILA. Es muy fcil de
implementar, pero no es prctico cuando existe una gran
cantidad de elementos que se van a sacar de la FILA.

2) Con FRENTE y FINAL movibles: se utiliza generalmente


solo para eliminaciones ya que da FILA LLENA sin que lo est.

3) Fila circular: para hacer un uso ms eficiente de la memoria


disponible, se trata a la FILA como una estructura circular, es
decir, el elemento anterior al primero es el ltimo
Ejemplos de FILA CIRCULAR:

a) Frente < Final:

W X Y Z
Frente Final

B) Frente > Final:

P L M N O
Final Frente
Implementacin de filas utilizando
arreglos
La definicin de una Fila ha de
contener un array para almacenar los
elementos de la fila, y dos referencias o
punteros que mantienen las posiciones
frente y final de la fila.
public class filaEstatica
{
private static final int TAMFILA=10;
private int frente;
private int fin;
int [] fila;

public filaEstatica ()
{ frente=fin=-1;
fila=new int[TAMFILA];

}
PASOS PARA INSERTAR EN UNA FILA
checar espacio
actualizar el apuntador final dependiendo
de:
Caso 1: si es el primer elemento en la fila: Frente
y Fin = 0
Caso 2: si no es el primero pero es el elemento
que est en MAXFILA entonces FIN = 0
Caso 3: ninguna de las anteriores FIN = FIN + 1

insertar el elemento
public boolean insertar (int elemento)
{
boolean x=true;
if(!filaLlena())
{
fin= (fin + 1 )% TAMFILA;
fila[fin]= elemento;
if (frente==-1){frente=0;}
}
else
x=false;

return x;
}
Pasos para eliminar un
elemento de la fila
Checar que la fila no este vaca.
Si no esta vaca:
Sacar el elemento del FRENTE en una variable
Actualizar apuntador FRENTE dependiendo de:
Caso 1: si es el ltimo elemento en la fila: Frente
y Fin = -1
Caso 2: si no es el ltimo pero es el elemento que
est en MAXFILA entonces FRENTE = 0
Caso 3: ninguna de las anteriores FRENTE =
FRENTE + 1
public int quitar()
{
int aux=-1;
if(filaVacia())
{
System.out.println ("no hay elementos para sacar de la fila");
}
else
aux= fila[frente];

if (frente == fin)
{ frente=fin=-1;}
else
{ frente= (frente + 1 )% TAMFILA;}

return aux;
}
public boolean filaVacia()
{
return (frente ==-1)&&(fin==-1);
}

public boolean filaLlena()


{
return (((fin + 1)% TAMFILA) == frente);
}
public void visualizar()
{
int n=frente-1;
if (frente!=-1)
do
{
n= (n+1)%TAMFILA;
System.out.print("["+fila[n]+"] ");
}
while(n!=fin);
else
System.out.println ("No hay elementos en la fila");
}
EJERCICIO 1 FILAS (esttica). PruebaFila.

Basndose en la implementacin la clase FILA (circular)


en memoria esttica que se presenta programe una
aplicacin que presente un men para probar la clase
Fila.

1) Insertar un elemento: pide por teclado el elemento a


insertar.
2) Eliminar un elemento.
3) Visualizar los elementos de la fila. Primero el del
frente.
4) Salir
EJERCICIO 2. Ordena Pares - Impares

Usa la clase Fila Esttica (circular) para programar una


aplicacin que reorganice los valores guardados en una
fila de 10 nmeros , de tal forma que primero queden los
valores pares (en el orden que haban llegado a la fila) y
despus los impares (en el mismo orden).
Ingrese los valores de la fila original por teclado.

Si los valores en la fila original son: 1-2-3-4-5-6-7-8-9-10


Al finalizar la ejecucin, la pila original quedara:
2-4-6-8-10-1-3-5-7-9 siendo el 2 el valor del frente de la
final y el 9 el valor del final.
EJERCICIO 3 FILAS y PILAS(esttica)

Utilice las clases PILA y FILA ya implementadas (memoria


esttica) para escribir un programa que lea una cadena y
determine si es palndromo, para lo cual se seguir la siguiente
estrategia:

1. AADIR cada carcter de la frase a una PILA y a la vez a una


FILA
2. EXTRAER carcter a carcter simultneamente de la pila y de
la fila.
3. Su comparacin determina si es palndromo o no, si son
iguales repetir el paso 2, si son diferentes terminar el proceso
indicando que NO ES PALINDROMO.
4. Si la pila y la fila se vaciaron ES PALINDROMO

NOTA: Una frase es palndromo si se lee exactamente igual de izquierda a


derecha que de derecha a izquierda por ejemplo: ABCCBA es palndromo.
NOTA 2: Modifique el tipo de elemento a almacenar segn convenga.

Das könnte Ihnen auch gefallen