TP2 - Hector Gimenez
TP2 - Hector Gimenez
TP2 - Hector Gimenez
Los trabajos se pueden realizar en forma grupal, hasta 4 integrantes y deben entregarse por
ecampus en la fecha fijada.
Integrantes: Héctor Gimenez
1. Dada las siguientes proposiciones, para una cola lineal, responde con verdadero, falso,
el resultado de la operación o la excepción correspondiente. (5 ptos)
2. Analiza los algoritmos de inserción y eliminación para para colas lineales, desarrollados
en clase y responde: (6 ptos)
a. ¿Qué excepción se controla al insertar un elemento en una cola?
En este caso primeramente se verifica que la cola no esté llena, ya que ante
ese tipo de escenarios se genera un desbordamiento u overflow, ya que el
mismo esta al máximo de su capacidad.
b. ¿Qué variables se utilizan para determinar si una cola está llena?
Se utiliza la variable Final, también la variable Max y una variable booleana de
nombre bandera que en este caso retorna true o false dependiendo de si la
cola está llena o no.
c. ¿Qué excepción se controla para eliminar el primer elemento de una la cola?
Que la cola tenga elementos para eliminar, además de que el valor pasado
como argumento debe coincidir con el frente de la cola
d. ¿Qué variables se utilizan para determinar si una cola está vacía?
Las variables frente y bandera
e. ¿Puede darse desbordamiento en una cola lineal con celdas disponibles?
Sí, es posible ya que al eliminar un elemento en caso de que no se reacomode
la posición los elementos sobrantes al querer insertar nuevos elementos se
puede generar este error.
f. ¿Cuál sería una posible solución?
Utilizar una cola circular.
3. Sea COLA una cola lineal de 6 elementos. Inicialmente la cola está vacía (FRENTE =
FONDO = 0). Grafique el estado de COLA e indique durante todas las operaciones
siguientes el valor de FRENTE, FONDO y NUMEL: (9 ptos)
a. Insertar los elementos AA, BB, CC
AA BB CC
b. Eliminar el elemento AA
BB CC
BB CC DD EE FF
d. Insertar el elemento GG
No es posible, se genera error de desborde. La cola queda igual
BB CC DD EE FF
e. Insertar el elemento HH
No es posible, se genera error de desborde. La cola queda igual.
BB CC DD EE FF
CC DD EE FF
DD EE FF
COLACIR[FONDO] = DATO
Fin si
Fin procedimiento
Respuesta: En este caso verifica las variables Frente y Fondo de la cola, una vez que el fondo
sea igual al tamaño máximo de la cola, se cambia el valor del apuntador fondo de la cola y se
coloca para que apunte desde la primera posición de la cola a modo de poder ir agregando
nuevos elementos en caso de que la cola no este llena.
2) Dado el siguiente algoritmo para eliminación de elementos en una cola circular, lista las
diferencias con respecto al algoritmo para eliminación de una cola lineal:
Elimina_ColaCircular (COLACIR, FRENTE, FONDO, NUMAX, NUMEL, DATO)
Las entradas están ligadas en orden alfabético por el apellido del autor, alfabéticamente por la
primera palabra del título y, en orden ascendente por el número de almacén. Muestre el
contenido de la estructura arreglo – libros, después de completar cada una de las transacciones
siguientes:
Sig_
Sig Num
Autor Sig_Autor Titulo Num_ Ant_Num_Almacen Sig_Disponible
Titulo Almacen
Almacen
F. Stop Creative
1 Fitzgerald 4 Photography 10 53526 10 5 0
Newspaper
2 Linus Type 0 Origami 4 98374 0 10 0
3 11
Lowen The Longest
4 Maner 10 Yard 0 23764 9 6 0
La Marke de la
5 Ascent Agu 6 Francaise 2 49261 1 9 0
Dr. Frank Beer Basted
6 Annstein 1 Hot Dogs 9 19822 4 8 0
7 3
Artic Computer
8 Abacus 5 Simulation 1 17760 6 0 0
Denn M. Betsy Wore
9 Stretcher 2 Blue Jeans 8 38641 5 4 0
Finger Lickin'
10 C. Sanders 9 Good 5 73920 2 1 0
11 12
12 13
13 14
14 15
15 0
Defina la clase Cola, usando algún lenguaje orientado a objetos, con base en los algoritmos
presentados para programar los métodos, para insertar, eliminar y verificar los estados
posibles de una Cola.
//App.java
public class App {
cola.insertar('A');
cola.insertar('B');
cola.insertar('C');
cola.insertar('D');
cola.insertar('E');
cola.eliminar('A');
cola.eliminar('B');
cola.eliminar('C');
cola.eliminar('D');
cola.insertar('E'); // Error overflow
cola.eliminar('E');
cola.eliminar('E'); // Error underflow
cola.imprimir();
}
//ClaseCola.java
public class ClaseCola {
ClaseCola(int max) {
this.frente = -1;
this.fondo = -1;
this.max = max;
this.cola = new char[max];
}
if(estaLleno()) {
throw new IllegalArgumentException("La cola esta llena: Overflow error!");
}
if(this.fondo == -1) {
this.frente = 0;
}
this.fondo++;
this.numEl++;
this.cola[this.fondo] = elemento;
System.out.println("Se insertó el elemento: " + this.cola[fondo] + " Frente: "
+ this.frente + " Fondo: " + this.fondo + " NumEl: " + this.numEl);
}
if(estaVacio()) {
throw new IllegalArgumentException("La cola esta vacia: Underflow error!");
}
if(this.frente() != elemento) {
throw new IllegalArgumentException("Elemento no coincide con el frente de l
a cola!");
}
if(this.numEl == 0) {
this.frente = -1;
this.fondo = -1;
} else {
this.frente++;
}