PONTIFICIA UNIVERSIDAD CATÓLICA MADRE Y MAESTRA FACULTAD DE CIENCIAS DE LA INGENIERÍA DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN Quiz #2 Solución – Divide & Vencerás | Tabla Hash Punto #1 public class InvertirArreglo { public static void invertirRecursivo(int arreglo[]) { invertirRecursivo(arreglo, 0, arreglo.length - 1); } private static void invertirRecursivo(int arreglo[], int inicio, int fin) { if (inicio < fin) { int tmp = arreglo[inicio]; arreglo[inicio] = arreglo[fin]; arreglo[fin] = tmp; invertirRecursivo(arreglo, inicio + 1, fin - 1); } } public static void main(String[] args) { int[] arreglo={1,2,3,4,5}; invertirRecursivo(arreglo); imprirmirArreglo(arreglo); } public static void imprirmirArreglo(int[] arreglo){ System.out.print("{ "); //usuando foreach en java. for(int i : arreglo){ System.out.print(i+", "); } System.out.print(" }"); } } Punto #2 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package quiz_2; import java.util.LinkedList; Ing. Carlos Camacho – ISC 423 – Estructura Datos y Algoritmos – PUCMM Santiago public class TablaHashAbierta { //listado. ListaElemento[] celdas=new ListaElemento[29]; //Retorna la posicion donde almaceno la celda. public int insertar(int key, String valor){ int posicion=getHash(key); if(celdas[posicion]==null){ celdas[posicion]=new ListaElemento(); } // ElementoHash elemento=new ElementoHash(); elemento.key=key; elemento.valor=valor; celdas[posicion].elementos.add(elemento); //new ElementoHash(key, valor) return posicion; } //Recupera la informacion dado el key. public String getElemento(int key){ int posicion=getHash(key); if(celdas[posicion]!=null){ for(ElementoHash elemento : celdas[posicion].elementos){ if(elemento.key == key){ return elemento.valor; } } } return null; } //genera el hash. public int getHash(int key){ return key%celdas.length; } } //Clase para almacenar la lista. class ListaElemento{ //Lista enlazada que puede contener objetos ElementoHash LinkedList<ElementoHash> elementos=new LinkedList<ElementoHash>(); } //Elemento que representa el valor de la posición. class ElementoHash{ public int key; String valor; public ElementoHash(int key, String valor) { this.key = key; Ing. Carlos Camacho – ISC 423 – Estructura Datos y Algoritmos – PUCMM Santiago this.valor = valor; } public ElementoHash() { } public static void main(String[] args) { TablaHashAbierta tba=new TablaHashAbierta(); tba.insertar(20011136, "Carlos Camacho"); tba.insertar(20011140, "Estudiante 1"); tba.insertar(20011135, "Estudiante 2"); System.out.println("Estudiante 20011140: "+tba.getElemento(20011140)); } } Ing. Carlos Camacho – ISC 423 – Estructura Datos y Algoritmos – PUCMM Santiago