You are on page 1of 5

Estructura de Datos

Tarea 1: Reconstruccion
Profesor: Joel Fuentes Ayudante: Gaspar Soto
Primavera 2013
1. Problema a resolver
Debido a la demora en la reconstruccion luego del terremoto en Chile por parte de
algunas instituciones, el gobierno ha decido crear mecanismos de optimizaci on de recursos
para reconstruir rapidamente sitios da nados en futuros eventos destructivos.
Uno de los servicios primordiales que se debe reconstruir en un sitio da nado es el
alumbrado p ublico de sectores urbanos. Tpicamente cuando ocurren eventos tel uricos de
gran magnitud (terremotos, tornados, tsunamis, etc), el sistema de alumbrado falla porque
caen alguno de los postes de alumbrado, por lo que se deben restauran rapidamente para
volver a habilitar la red. Los postes inicialmente se encuentran a una distancia de 20 metros
uno de otro.
El gobierno se ha dado cuenta que la habilitacion completa de los postes de alumbrado
toma un largo tiempo, por lo que ha decidido optimizar la habilitaci on de alumbrado
mediante la restauracion de solo una parte de los postes cados. Se repondr an postes cados en
la misma ubicaci on que estaban, sin embargo, para disminuir los tiempos de reconstrucci on
se ha decidido: un poste sera restaurado s olo si el largo desde el ultimo poste (restaurado o
auntiguo en buen estado) excede o es igual a 40 metros.
Considere que la red de alumbrado p ublico se encuentra generalmente en forma circular,
como muestra la siguiente gura:
1
Red de postes
alumbrado
postes en buen estado
postes cados
Usted deber a entonces escribir un programa que determine el menor n umero de postes
necesarios para reponer el servicio de alumbrado p ublico de acuerdo a las decisiones del
gobierno.
2. Entrada y Salida
El programa debera leer un archivo llamado postes.in que contiene diferentes mapas de
redes de alumbrado de diferentes sectores y ciudades. Cada caso es descrito en dos lineas.
La primera lnea contiene un entero N que indica el n umero de postes originales en el sector
(5 N 5000). La secuenda lnea contiene N enteros X
i
indicando el estado de cada poste
despues del evento destructivo (0 X
i
1 para i = 1, 2, ..., N). Si X
i
= 1 el poste i est a en
buenas condiciones, si X
i
= 0 el poste i es da nado o cado. Note que despues del poste X
N
viene el poste X
1
.
Se debe generar un archivo llamado postes.out el cual, para cada uno de los casos de
entrada, contendr a una lnea con un entero que indica el n umero de postes mnimo que se
necesitan restaurar de acuerdo a las condiciones del gobierno.
2
Ejemplo archivo entrada (postes.in) Ejemplo archivo salida (postes.out)
10 2
1 0 0 1 0 0 1 0 1 1 2
1 1 3
1 0 0 1 0 0 0 1 1 0 1
12
0 0 0 0 0 1 1 0 0 0 1 1
3. Clase CircularLinkedList
Se requiere que en su tarea utilice la estructura de datos CircularLinkedList para simular
la red de alumbrado. Para esto debe crear esta nueva clase a partir de la implementaci on de
la clase LinkedList.java vista en clases, con la salvedad que ahora el ultimo nodo apuntar a en
su referencia siguiente al primer elemento de la lista (o header si lo estima conveniente), por
lo tanto deber a modicar los metodos necesarios para obtener este comportamiento.
La nueva clase CircularLinkedList debe proveer los siguientes metodos:
public CircularLinkedList( )
Constructor
public boolean isEmpty( )
Verica si la lista est a logicamente vacia. Retorna true si esta vaca, false si no
public void makeEmpty( )
Vaca la lista completamente
public LinkedListIterator<AnyType> zeroth( )
@return un iterador con referencia hacia header
public LinkedListIterator<AnyType> first( )
@return un iterador con referencia hacia el primer nodo
public void insert( AnyType x, LinkedListIterator<AnyType> p )
Inserta x despues de p
@param x el elemento a insertar
@param p ta posicion anterior a donde se insertara x
3
public LinkedListIterator<AnyType> find( AnyType x )
Retorna un iterador correspondiente al primer nodo que contenga a x
@param x el elemento a buscar
@return un iterador, el iterador no es v alido si el elemento no es encontrado.
public LinkedListIterator<AnyType> findPrevious( AnyType x )
Retorna un iterador al nodo anterior del que contenga a un elemento.
@param x el elemento a buscar
@return iterador apropiado si el elemento es encontrado. Si no, el iterador corresponde
al ultimo nodo de la lista
public void remove( AnyType x )
Elimina la primera ocurrencia de un elemento
@param x el elemento a eliminar
public static <AnyType> void printList( LinkedList<AnyType> theList )
Imprime la lista completa
@param theList la lista a imprimir
public static <AnyType> int listSize( LinkedList<AnyType> theList )
Obtiene el tama no de la lista
@param theList la lista a analizar
@return size el tama no de la lista
L ogicamente para que la clase CircularLinkedList funcione, usted debe utilizar las clases
ListNode y LinkedListIterador vistas en clases.
4. Entrega
La tarea debe ser realizada de forma individual.
Las copias se evaluar an con nota mnima.
Se nalar el autor del programa en cada archivo .java.
Debe considerar comentarios en su codigo soluci on.
Debe subir a Moodle2.0 la carpeta comprimida de su proyecto en c odigo fuente.
4
Fecha de entrega: Viernes 27 de Septiembre hasta las 23:55 hrs.
Se descontar a 1,5 ptos por da de entrega atrasada.
5

You might also like