Semestre: III
Justificacin:
La estructuracin de datos permite hacer ms prctico el entendimiento del programa, ya que
se disea por partes o mdulos, conocidos como una funcin o procedimientos y que se utiliza
en cada tarea a desarrollar.
Una estructura de datos lineal con un funcionamiento determinado se conoce como una cola.
Una cola es una coleccin ordenada de elementos a partir de la cual se pueden eliminar
elementos de un extremo (entendido como la cabeza de la cola) y en el cual tambin se
pueden agregar elementos en el otro extremo (llamado parte posterior de la cola), su filosofa
es que el primer elemento que entra es el primero que sale.
Objetivo general:
Desarrollar en el alumno la creatividad para realizar operaciones de aplicaciones de estructura
de datos en colas.
Objetivos especficos:
Marco Terico:
En varias ocasiones de nuestras vidas, hemos tenido que hacer colas para realizar alguna
transaccin comercial, pagar un servicio pblico, etc y debemos esperar que se atiendan uno a
uno en el orden de llegada; es decir, una cola cumple con la ley primero en entrar, primero en
salir. En el idioma ingles, se puede leer first in,first out de donde se genera el famoso FIFO.
En computacin, una cola se puede definir como una estructura que opera de acuerdo a FIFO.
El proceso anterior determina las operaciones que se deben llevar a cabo en cada funcin.
Para el desarrollo de las funciones que manejan la estructura FIFO, vamos a utilizar las
siguientes definiciones globales:
Utilicemos el siguiente codigo para verificar el funcionamiento de una cola:
public class Cola {
private Nodo cabeza;
public void agregar(Informacion info) {
if (cabeza == null) {
cabeza = new Nodo();
cabeza.info = info;
} else {
Nodo rec = cabeza;
Igualmente se pueden crear colas donde manejan nodos con diferente informacion, verifiquen
este codigo:
public class Cola {
private Nodo cabeza;
public void agregar(Informacion info) {
if (cabeza == null) {
cabeza = new Nodo();
cabeza.info = info;
} else {
Nodo rec = cabeza;
while (rec.siguiente != null) {
rec = rec.siguiente;
}
rec.siguiente = new Nodo();
rec.siguiente.info = info;
}
}
public Informacion atender() {
if (cabeza != null) {
Nodo temp = cabeza;
cabeza = cabeza.siguiente;
temp.siguiente = null;
return temp.info;
}
return new Informacion();
}
public void listar(){
Nodo rec=cabeza;
while(rec!=null){
System.out.println("dato 1: "+rec.info.dato1);
System.out.println("dato 2: "+rec.info.dato2);
System.out.println("dato 3: "+rec.info.dato3);
System.out.println("________________________");
rec=rec.siguiente;
}
}
}
public class Informacion {
public String dato1;
public String dato2;
public String dato3;
}
public class Nodo {
public Nodo siguiente;
public Informacion info;
}
public class Principal {
public static void main(String[] args) {
Cola cola = new Cola();
int opcion = -1;
while (opcion != 4) {
System.out.println("MENU:");
System.out.println("1. agregar");
System.out.println("2. atender");
System.out.println("3. listar");
System.out.println("4. salir");
opcion = Leer.datoInt();
if (opcion == 1) {
System.out.println("Direccion : "+rec.info.Direccion);
System.out.println("Empresa: "+rec.info.Empresa);
rec=rec.siguiente;
}
}
}
public class Informacion {
public String Nombre;
public String Direccion;
public String Empresa;
}
public class Nodo {
public Nodo siguiente;
public Informacion info;
}
public class Principal {
public static void main(String[] args) {
Cola cola = new Cola();
int opcion = -1;
while (opcion != 4) {
System.out.println("MENU:");
System.out.println("1. agregar");
System.out.println("2. atender");
System.out.println("3. listar");
System.out.println("4. salir");
opcion = Leer.datoInt();
if (opcion == 1) {
Informacion info = new Informacion();
System.out.println("digite el Nombre:");
info.Nombre = Leer.dato();
System.out.println("digite la direccion:");
info.Direccion = Leer.dato();
System.out.println("digite la empresa:");
info.Empresa = Leer.dato();
cola.agregar(info);
} else if (opcion == 2) {
Informacion info = cola.atender();
System.out.println("Nombre: "+info.Nombre);
System.out.println("Direccion: "+info.Empresa);
System.out.println("Empresa: "+info.Empresa);
}else if (opcion == 3) {
cola.listar();
}
}
System.out.println("terminado");
}
}
Realice la actividad 3 (Al Final de la gua)
Ahora, la informacion que maneja la cola puede ser bajada a un archivo plano en el metodo
BajarArchivo, revise le siguiente codigo:
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Cola {
private Nodo cabeza;
public void agregar(Informacion info) {
if (cabeza == null) {
cabeza = new Nodo();
cabeza.info = info;
} else {
Nodo rec = cabeza;
while (rec.siguiente != null) {
rec = rec.siguiente;
}
rec.siguiente = new Nodo();
rec.siguiente.info = info;
}
}
public Informacion atender() {
if (cabeza != null) {
Nodo temp = cabeza;
cabeza = cabeza.siguiente;
temp.siguiente = null;
return temp.info;
}
return new Informacion();
}
public void BajarArchivo() {
PrintStream salida = null;
try {
salida = new PrintStream("d:/PruebaArchivo/gustavo.txt");
Nodo rec = cabeza;
while (rec != null) {
salida.println("Nombre " + rec.info.Nombre);
salida.println("Direccion : " + rec.info.Direccion);
salida.println("Empresa: " + rec.info.Empresa);
rec = rec.siguiente;
}
salida.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Cola.class.getName()).log(Level.SEVERE, null, ex);
} finally {
salida.close();
}
}
}
public class Informacion {
public String Nombre;
public String Direccion;
public String Empresa;
}
public class Nodo {
public Nodo siguiente;
public Informacion info;
}
public class Principal {
public static void main(String[] args) {
ACTIVIDADES
1. Realice un programa de colas, donde vayan ingresando automticamente los clientes
numerados del 50 al 60, en el cual ingresan 2 clientes y se atiende 1. Verificar
quienes quedaron en la cola.
2. Implemente un mtodo que devuelva el nmero de clientes de una estructura FIFO.
3. Realice un programa utilizando colas, donde permita ingresar los datos de los alumnos:
nombre y tres notas y muestre todos los datos con el promedio de las notas de cada
alumno y los vaya atendiendo en el orden de llegada.
4. Realice un programa con colas que permita capturar la informacin de 5 clientes
(nombre y documento), se muestre el reporte de los que estn en la fila inicial.
Posteriormente se atienda tres personas y se muestre el reporte de quienes fueron los
que se atendieron y quienes quedaron en la cola.
BIBLIOGRAFIA