Mostrando entradas con la etiqueta LinkedList. Mostrar todas las entradas
Mostrando entradas con la etiqueta LinkedList. Mostrar todas las entradas

viernes, 9 de septiembre de 2011

Ejercicio con figuras

En este ejercicio se utilizan las figuras creadas anteriormente. Se fabricarán varias figuras, que se almacenarán en un fichero utilizando la clase ObjectOutputStream, que nos permite serializar objetos (para ello la clase figura debe implementar Serializable).
Posteriormente se recuperarán las figuras y calcularemos el área media.

public class GuardarFiguras3 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //FABRICAR VARIAS FIGURAS Y GUARDARLAS EN UN FICHERO
        FileOutputStream fos = new FileOutputStream("figuras3");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        LinkedList listado = new LinkedList();
        ListIterator it = listado.listIterator();
        Figura aux;
        float sup=0;
        it.add(new Rectangulo(1, 3, 5, 6));
        sup+=it.previous().area();
        it.next();
        it.add(new Coche(3, 2, 6, 9));
        sup+=it.previous().area();
        it.next();
        it.add(new Circulo(4, 4, 4));
        sup+=it.previous().area();
        it.next();
        it.add(new Rectangulo(1, 3, 5, 5));
        sup+=it.previous().area();
        it.next();
        it.add(new Triangulo(2, 4, 3, 4, 5));
        sup+=it.previous().area();
        sup = sup/5;
        System.out.println("Área media inicial: "+sup);
        ListIterator it2 = listado.listIterator();
        while (it2.hasNext()) {
            oos.writeObject(it2.next());
        }
        oos.close();
        fos.close();
        //RECUPERAR FIGURAS Y CALCULAR LA MEDIA (DEBE COINCIDIR CON LA INICIAL)
        FileInputStream fis = new FileInputStream("figuras3");
        ObjectInputStream ois = new ObjectInputStream(fis);
        float media = 0;
        int contador = 0;
        try {
            while (true) {
                aux = (Figura) ois.readObject();
                media += aux.area();
                contador++;
            }
        } catch (EOFException e) {
        }
        ois.close();
        fis.close();
        media = media / contador;
        System.out.println("Área media final: " + media);
    }
}

miércoles, 31 de agosto de 2011

Ejercicio funciones insertar

Realizar las funciones:
  • int insertar (List<Comparable> l, Comparable d). La función recibe una lista de datos comparables, que debe estar ordenada, y un dato comparable que es el que se quiere insertar en la lista anterior. Como resultado se retorna la posición en la que ha sido insertado el dato.
  • void insertar (List<Comparable> l, Collection<Comparable> c). Recibe una lista de datos comparables, que estarán ordenados, y una colección de datos que se insertarán en el lugar correspondiente de la lista anterior. No retorna nada.
Se añade el programa principal con el que se probó la función.

public class Insertar {
    public static void main (String[] args) {
        LinkedList<String> nombres = new LinkedList<String>();
        LinkedList<String> nombres2 = new LinkedList<String>();
        int pos;
        pos = insertar((List)nombres, "Juan");
        System.out.println(nombres);
        System.out.println(pos);
        pos = insertar((List)nombres, "Antonio");
        System.out.println(nombres);
        System.out.println(pos);
        pos = insertar((List)nombres, "Manuela");
        System.out.println(nombres);
        System.out.println(pos);
        nombres2.add("Julia");
        nombres2.add("Angel");
        nombres2.add("Carlos");
        nombres2.add("Verónica");
        insertar((List)nombres, (Collection)nombres2);
        System.out.println(nombres);
    }
    public static int insertar(List<Comparable> l, Comparable d) {
        int i=0;
        ListIterator<Comparable> it = l.listIterator();
        while (i < l.size() && d.compareTo(it.next()) > 0) {
            i++;
        }
        if (i < l.size())
            it.previous();
        it.add(d);
        return i;
    }
    public static void insertar(List<Comparable> l, Collection<Comparable> c) {
        Iterator<Comparable> itC = c.iterator();
        while (itC.hasNext()) {
            insertar(l, itC.next());
        }
    }
}

lunes, 29 de agosto de 2011

Ejercicio "ListaEnlazada"

Para conocer un poco mejor el funcionamiento de la clase LinkedList<T>, realizar el siguiente ejercicio:
  1. Crear un LinkedList de Integer: LinkedList<Integer>.
  2. Añadir los números del 1 al 5.
  3. Eliminar los números 2, 3 y 4.
    1. En primer lugar con la función remove (int index) propia de los objetos LinkedList.
    2. En segundo lugar, utilizando un objeto Iterator.
NOTA: se imprime en pantalla a menudo para comprobar que todo va funcionando bien en cada paso.

public class ListaEnlazada {
    public static void main (String[] args) {
        LinkedList<Integer> lista = new LinkedList<Integer>();
        int i, j=1;
        for (i=0; i<5; i++){
            lista.add(i+1);
        }
        System.out.println(lista.toString());
        for (i=0; i<3; i++){
            lista.remove(j);
        }
        System.out.println(lista.toString());
        lista.add(1, 2);
        lista.add(2, 3);
        lista.add(3, 4);
        System.out.println(lista.toString());
        Iterator<Integer> it = lista.iterator();
        it.next();
        it.next();
        for (i=0; i<2; i++){
            it.remove();
            it.next();
        }
        it.remove();
        System.out.println(lista.toString());
    }
}