Está en la página 1de 3

Laboratorio 0

En este laboratorio practicaremos estructuras de datos en Java. Este laboratorio lo revisaré manualmente,
pues me interesa ver la forma de programar de cada uno, por favor agreguen suficientes comentarios
para que su código sea fácil de entender.

Ejercicio 1
Implemente en Java la clase Categories según la siguiente descripción.

Campos

• Una Hashtable llamada three. Esta tabla se inicializa vacía cuando llamamos al constructor, y es
encapsulada. La tabla contendrá LinkedList que a su vez contendrán String.
• Un entero llamado counter. Nos indicará cuantos elementos se han logrado guardar en la tabla.

Métodos

• Un constructor que no recibe argumentos. Se encarga de inicializar a three como una tabla vacía,
y a counter como cero.
• void classify(String input) recibe una cadena de caracteres, y utilizando expresiones regulares de
Java, la identificará en una de las siguientes categorías:
o Correo
▪ luiscu@galileo.edu
▪ aiken@cs.stanford.edu
▪ sysadmin@banco.com.gt
o Teléfono
▪ +502 5585 2133
▪ 5979-5503
o Fecha
▪ 27/03/2019
▪ 15-07-2018

Considere únicamente los formatos mostrados en los ejemplos anteriores, no se complique con
formatos adicionales. Tras identificar a que categoría pertenece la cadena, debe guardarla en el
lugar correspondiente de la tabla three y actualizar el contador.

La tabla three tendrá únicamente tres posibles llaves: mail, phone y date. Cada una de estas llaves
nos servirá para identificar una LinkedList donde guardaremos las cadenas. Si es la primera vez
que se está ingresando un dato de cierto tipo, en ese momento se debe crear la lista e ingresar el
dato. Si la lista ya existe, el nuevo dato se agrega a esta.

Si el dato ingresado no corresponde a alguno de los tres tipos, ignórelo.

• void printMails() imprime a pantalla de forma ordenada las direcciones de correo almacenadas
en la tabla. Si no hay ninguna guardada, imprime “NO MAILS”.
• void printPhones() imprime a pantalla de forma ordenada los números telefónicos guardados en
la tabla. Si no hay ninguna guardada, imprime “NO PHONES”.

• void printDates() imprime a pantalla de forma ordenada las fechas contenidas en la tabla. Si no
hay ninguna guardada, imprime “NO DATES”.

• void countByCategory() imprime a pantalla de forma ordenada cuantos datos de cada tipo están
guardados (no los valores).

Puede visualizar la tabla three de la siguiente manera:

key value

mail luiscu@galileo.edu aiken@cs.stanford.edu sysadmin@banco.com.gt

phone +502 5585 2133 5979-5503

date 27/03/2019 15-07-2018

Al completar la clase anterior, cree la clase CategoryUserInterface.

Esta clase tiene un único método, main(String[] args). El main de esta clase cuenta con un ciclo que le
pide al usuario ingresar una cadena, toma esta cadena y se la envía al método classify de la clase anterior
para que sea guardado en la tabla. Tras ingresar exitosamente ocho datos a la tabla, use countByCategory
para desplegar cuántos se ingresaron de cada tipo.

Ejercicio 2
Implemente la clase BinaryTree que represente un árbol binario, implemente también cualquier otra clase
que pueda necesitar para el árbol. Este árbol debe ser capaz de guardar enteros. Agregue los métodos
necesarios para poder agregar nodos y desde su clase BinaryTreeMain construya el siguiente árbol:
Agregue un método para que su árbol se pueda desplegar de forma recursiva, y que al hacerlo los números
queden en el siguiente orden:

31, 44, 47, 48, 64, 65, 67, 74, 76, 78

Entregue sus archivos .java dentro de un archivo comprimido en zip, que debe llamarse lab0-
CarnetSeccion.zip (por ejemplo, lab0-11002191AN.zip). Este archivo será enviado de la forma indicada
durante el laboratorio.

También podría gustarte