Universidad de Costa Rica
|
|
1) [33 pts] Método de ordenamiento
List.bubbleSort()
public static void bubbleSort( int VEC[] ) { int i,j; for ( i=VEC.length; i>0; --i ) { for ( j=1; j<i; ++j ) { if ( VEC[j]<VEC[j-1] ) ) { intercambie( VEC, j,j-1 ); } } } } |
/** Determina si los primeros N valores de la * lista están ordenados ascendentemente. */ public boolean estaOrdenado( int N ) { if ( N<=1 ) { return true; } List.Node jN,jNplus; Integer jVal, jPlusVal; jN = this.m_head; jNplus = jN.m_next; for ( int i=1; i<N; ++i ) { // N-1 veces jVal = (Integer) jN.m_data; jPlusVal = (Integer) jNplus.m_data; if ( jVal.intValue() <= jPlusVal.intValue() ) { /* ok */ } else { return false; } jN = jNplus; jNplus = jNplus.m_next; } return true; } |
Verifique que esta
implementación Java de este
método de ordenamiento funciona correctamente y, en caso contrario,
corríjala. Luego utilice la clase
lista doblemente enlazada vista en clase
para incluirle su método bubbleSort()
que utilizar este
ordenamiento. Para verificar que su implementación funciona
correctamente, utilice las rutinas de permutaciones que desarrolló una
tarea previa para constatar que su
método funciona con tadas las permutaciones de números
consecutives en el rango [0..10]
. Explique por que su
método List.bubbleSort() no necesita ningun parámetro. Recuerde:
¡es necesario que manipule los enlaces de la lista!
2) [33 pts]
2.a) [5 pts]
Expliqué cómo se puede usar una
lista Java para
implementar el contenedor
Cola
. Llame
saque()
a la operación que
elimina el siguiente valor que hay que eliminar de la lista cuando
funciona como si fuera una cola [la otra operación debería
ser mete()
].
2.b) [6 pts]
Suponga que usted cuenta con una clase Grafo
que le permite
almacenar nodos y enlaces.
Especifique
las operaciones conecte(n1,n2,val)
y conectados()
que sirven para agregar enlaces al grafo y para obtener la lista de nodos que
están enlazados a un nodo específico (no se complique la vida, y
asuma que los enlaces siempre son bidireccionales).
2.c) [0 pts]
Suponga que su grafo contiene las siguientes conexiones
[ a-e=5, e-f=4, a-d=1, d-f=3, a-b=2, b-c=2, c-f=8, d-f=8 ]
.
Dibuje el grafo y constate que, al recorrerlo por niveles empezando
con el nodo "a
", una posible secuencia de recorrido es
(a b d e c f)
y otras es (a e b d e f)
.
2.d) [22 pts]
Implemente un iterador Java completo, similar al que usó en unas de sus
tareas programadas, junto con sus
operaciones hasNext()
y
next()
,
que permita recorrer un grafo por niveles. Use la lista como una cola o use su
contenedor cola implementado con base en la lista.
Adolfo Di Mare <adolfo@di-mare.com>.
|