Crear dos Grupos los cuales almacenen (n) estudiantes los cuales deben tener como atributos, Código, Nombre y Edad.
Se debe realizar por cada una de las siguientes estructuras de datos (listas doblemente enlazadas, pilas y colas) las Siguientes funciones:
Unión: hacer la unión de los códigos de los estudiantes del grupo 1 y el grupo 2, imprimir solo los códigos resultantes de la unión.
Intersección: comparar entre
los dos grupos de estudiantes e imprimir los estudiantes que tengan
edades comunes entre los dos grupos.
Diferencia: comparar
entre los dos grupos de estudiantes e imprimir los estudiantes que no tengan edad común entre los los grupos.
Pertenencia: Comparar entre los dos grupos de estudiantes e imprimir los estudiantes que pertenecen a un solo grupo.
Clase Main:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package estructuradedatos; import estructuradedatos.listasDobles.ListaDoble; import estructuradedatos.pilas.Pila; import estructuradedatos.colas.Cola; /** * * @author Usuario */ public class EstructuraDeDatos { /** * @param args the command line arguments */ //creamos los grupos de listas dobles private static ListaDoble grupoUno = new ListaDoble(); private static ListaDoble grupoDos = new ListaDoble(); private static ListaDoble operaciones = new ListaDoble(); //creamos los grupos de pila private static Pila grupoUnoPila = new Pila(); private static Pila grupoDosPila = new Pila(); private static Pila operacionesPila = new Pila(); //creamos los grupos de cola private static Cola grupoUnoCola = new Cola(); private static Cola grupoDosCola = new Cola(); private static Cola operacionesCola = new Cola(); public static void main(String[] args) { //creamos los estudiantes Estudiante estudiante1 = new Estudiante(); estudiante1.setCodigo(123); estudiante1.setEdad(12); estudiante1.setNombre("camila"); Estudiante estudiante2 = new Estudiante(); estudiante2.setCodigo(124); estudiante2.setEdad(12); estudiante2.setNombre("maria"); Estudiante estudiante3 = new Estudiante(); estudiante3.setCodigo(125); estudiante3.setEdad(14); estudiante3.setNombre("oscar"); Estudiante estudiante4 = new Estudiante(); estudiante4.setCodigo(126); estudiante4.setEdad(13); estudiante4.setNombre("carolina"); Estudiante estudiante5 = new Estudiante(); estudiante5.setCodigo(127); estudiante5.setEdad(14); estudiante5.setNombre("Jhoan"); Estudiante estudiante6 = new Estudiante(); estudiante6.setCodigo(127); estudiante6.setEdad(12); estudiante6.setNombre("natalia"); Estudiante estudiante7 = new Estudiante(); estudiante7.setCodigo(128); estudiante7.setEdad(15); estudiante7.setNombre("juan"); System.out.println("\n*********** LISTAS DOBLES **************"); //agregamos los primeros 3 estudiantes al grupo uno listas dobles grupoUno.add(estudiante1); grupoUno.add(estudiante2); grupoUno.add(estudiante3); grupoUno.add(estudiante7); System.out.println("Grupo Uno Listas dobles"); grupoUno.imprimir(); //agregamos los 3 ultimos estudiantes al grupo dos grupoDos.add(estudiante4); grupoDos.add(estudiante5); grupoDos.add(estudiante6); grupoDos.add(estudiante7); System.out.println("\nGrupo Dos Listas dobles"); grupoDos.imprimir(); //union System.out.println("\nUnion de codigos"); System.out.println(operaciones.union(grupoUno, grupoDos)); //interseccion System.out.println("\nIntersección de edades"); System.out.println(operaciones.interseccion(grupoUno, grupoDos)); //Diferencia System.out.println("\nDiferencia de edades"); System.out.println(operaciones.diferencia(grupoUno, grupoDos)); //Pertenencia System.out.println("\nPertenencia"); System.out.println(operaciones.pertenencia(grupoUno, grupoDos)); System.out.println("\n*********** PILAS **************"); //ingresamos los estudiantes en el grupo uno grupoUnoPila.push(estudiante1); grupoUnoPila.push(estudiante2); grupoUnoPila.push(estudiante3); grupoUnoPila.push(estudiante7); System.out.println("Grupo Uno Pilas"); grupoUnoPila.imprimir(); //ingresamos los estudiantes en el grupo dos grupoDosPila.push(estudiante4); grupoDosPila.push(estudiante5); grupoDosPila.push(estudiante6); grupoDosPila.push(estudiante7); System.out.println("\nGrupo Dos Pilas"); grupoDosPila.imprimir(); //union System.out.println("\nUnion Pilas"); System.out.println(operacionesPila.union(grupoUnoPila, grupoDosPila)); //interseccion System.out.println("\nIntersección de edades Pilas"); System.out.println(operacionesPila.interseccion(grupoUnoPila, grupoDosPila)); //Diferencia System.out.println("\nDiferencia de edades Pilas"); System.out.println(operacionesPila.diferencia(grupoUnoPila, grupoDosPila)); //Pertenencia System.out.println("\nPertenencia Pilas"); System.out.println(operacionesPila.pertenencia(grupoUnoPila, grupoDosPila)); System.out.println("\n********* COLAS **********"); grupoUnoCola.add(estudiante1); grupoUnoCola.add(estudiante2); grupoUnoCola.add(estudiante3); grupoUnoCola.add(estudiante7); System.out.println("Grupo uno cola"); grupoUnoCola.imprimir(); grupoDosCola.add(estudiante4); grupoDosCola.add(estudiante5); grupoDosCola.add(estudiante6); grupoDosCola.add(estudiante7); System.out.println("Grupo DOS cola"); grupoDosCola.imprimir(); //union System.out.println("\nUnion de codigos colas"); System.out.println(operacionesCola.union(grupoUnoCola, grupoDosCola)); //interseccion System.out.println("\nIntersección de edades Colas"); System.out.println(operacionesCola.interseccion(grupoUnoCola, grupoDosCola)); //Diferencia System.out.println("\nDiferencia de edades Colas"); System.out.println(operacionesCola.diferencia(grupoUnoCola, grupoDosCola)); //Pertenencia System.out.println("\nPertenencia Colas"); System.out.println(operacionesCola.pertenencia(grupoUnoCola, grupoDosCola)); } }
Clase estudiante:
package estructuradedatos; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * * @author Usuario */ public class Estudiante { private int codigo; private String nombre; private int edad; public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } }
Clase lista doblemente enlazada:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package estructuradedatos.listasDobles; import estructuradedatos.Estudiante; /** * * @author Usuario */ public class ListaDoble { private Nodo raiz; public Nodo getRaiz() { return raiz; } public void setRaiz(Nodo raiz) { this.raiz = raiz; } public void add(Estudiante d) { Nodo nuevo = new Nodo(d); if (raiz == null) { raiz = nuevo; } else { if (d != null) { apuntarAlUltimo(nuevo); } } } public void apuntarAlUltimo(Nodo nuevo) { Nodo temp = raiz; while (temp.getSiguinte() != null) { temp = temp.getSiguinte(); } temp.setSiguinte(nuevo); nuevo.setAnterior(temp); } public Nodo buscar(Estudiante o) { Nodo temp = raiz; while (temp != null) { if (temp.getDato() == o) { return temp; } temp = temp.getSiguinte(); } return null; } public Boolean buscarCodigo(Estudiante o) { Nodo temp = raiz; while (temp != null) { if (temp.getDato().getCodigo() == o.getCodigo()) { return true; } temp = temp.getSiguinte(); } return false; } public void imprimir() { Nodo temp = raiz; if (temp.getAnterior() == null) { } else { System.out.print(temp.getDato().getCodigo() + ", " + temp.getDato().getNombre() + ", " + temp.getDato().getEdad() + "<->"); } while (temp != null) { System.out.print(temp.getDato().getCodigo() + ", " + temp.getDato().getNombre() + ", " + temp.getDato().getEdad() + "<->"); temp = temp.getSiguinte(); } if (temp == null) { } } public String imprimirUnion() { Nodo temp = raiz; String estudiantes = ""; if (temp.getAnterior() == null) { } else { } while (temp != null) { estudiantes = estudiantes + temp.getDato().getCodigo() + " <-> "; temp = temp.getSiguinte(); } return estudiantes; } public String imprimirInterseccion() { Nodo temp = raiz; String estudiantes = ""; while (temp != null) { estudiantes = estudiantes + temp.getDato().getCodigo() + ", " + temp.getDato().getNombre() + ", " + temp.getDato().getEdad() + " <-> "; temp = temp.getSiguinte(); } return estudiantes; } public String union(ListaDoble grupo1, ListaDoble grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; ListaDoble listaUnion = new ListaDoble(); while (temp1 != null) { if (listaUnion.buscarCodigo(temp1.getDato())) { } else { listaUnion.add(temp1.getDato()); } temp1 = temp1.getSiguinte(); } while (temp2 != null) { if (listaUnion.buscarCodigo(temp2.getDato())) { } else { listaUnion.add(temp2.getDato()); } temp2 = temp2.getSiguinte(); } return listaUnion.imprimirUnion(); } public String interseccion(ListaDoble grupo1, ListaDoble grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; ListaDoble listaInterseccion = new ListaDoble(); while (temp1 != null) { while (temp2 != null) { if (temp1.getDato().getEdad() == temp2.getDato().getEdad()) { if (listaInterseccion.buscar(temp1.getDato()) == null) { listaInterseccion.add(temp1.getDato()); } if (listaInterseccion.buscar(temp2.getDato()) == null) { listaInterseccion.add(temp2.getDato()); } } temp2 = temp2.getSiguinte(); } temp2 = grupo2.raiz; temp1 = temp1.getSiguinte(); } return listaInterseccion.imprimirInterseccion(); } public String diferencia(ListaDoble grupo1, ListaDoble grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Boolean diferente = false; ListaDoble listaDiferencia = new ListaDoble(); while (temp1 != null) { while (temp2 != null) { if (temp1.getDato().getEdad() == temp2.getDato().getEdad()) { diferente = true; } temp2 = temp2.getSiguinte(); } if (diferente == false) { listaDiferencia.add(temp1.getDato()); } diferente = false; temp2 = grupo2.raiz; temp1 = temp1.getSiguinte(); } while (temp2 != null) { while (temp1 != null) { if (temp2.getDato().getEdad() == temp1.getDato().getEdad()) { diferente = true; } temp1 = temp1.getSiguinte(); } if (diferente == false) { listaDiferencia.add(temp2.getDato()); } diferente = false; temp1 = grupo1.raiz; temp2 = temp2.getSiguinte(); } return listaDiferencia.imprimirInterseccion(); } public String pertenencia(ListaDoble grupo1, ListaDoble grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; ListaDoble listaPertenencia = new ListaDoble(); while (temp1 != null) { if (grupo2.buscar(temp1.getDato()) == null) { listaPertenencia.add(temp1.getDato()); } temp1 = temp1.getSiguinte(); } while (temp2 != null) { if (grupo1.buscar(temp2.getDato()) == null) { listaPertenencia.add(temp2.getDato()); } temp2 = temp2.getSiguinte(); } return listaPertenencia.imprimirInterseccion(); } } ->->->->
Clase Nodo lista doblemente enlazada:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package estructuradedatos.listasDobles; import estructuradedatos.Estudiante; /** * * @author Usuario */ public class Nodo { private Estudiante dato; private Nodo siguinte; private Nodo anterior; public Nodo(Estudiante dato) { this.dato = dato; } public Estudiante getDato() { return dato; } public void setDato(Estudiante dato) { this.dato = dato; } public Nodo getSiguinte() { return siguinte; } public void setSiguinte(Nodo siguinte) { this.siguinte = siguinte; } public Nodo getAnterior() { return anterior; } public void setAnterior(Nodo anterior) { this.anterior = anterior; } }
Clase Nodo Para las Pilas:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package estructuradedatos.pilas; import estructuradedatos.Estudiante; /** * * @author Usuario */ public class Nodo { private Estudiante dato; private Nodo siguinte; public Nodo(Estudiante dato) { this.dato = dato; } public Estudiante getDato() { return dato; } public void setDato(Estudiante dato) { this.dato = dato; } public Nodo getSiguinte() { return siguinte; } public void setSiguinte(Nodo siguinte) { this.siguinte = siguinte; } }
Clase Pilas:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package estructuradedatos.pilas; import estructuradedatos.Estudiante; /** * * @author Usuario */ public class Pila { Nodo raiz; public void push(Estudiante d) { Nodo nuevo = new Nodo(d); if (raiz == null) { raiz = nuevo; } else { if (d != null) { nuevo.setSiguinte(raiz); raiz = nuevo; } } } public void imprimir() { Nodo temp = raiz; while (temp != null) { System.out.print(temp.getDato().getCodigo() + ", " + temp.getDato().getNombre() + ", " + temp.getDato().getEdad() + "->"); temp = temp.getSiguinte(); } } public String imprimirUnion() { Nodo temp = raiz; String codigos = ""; while (temp != null) { codigos = codigos + temp.getDato().getCodigo() + "->"; temp = temp.getSiguinte(); } return codigos; } public String imprimirInterseccion() { Nodo temp = raiz; String estudiantes = ""; while (temp != null) { estudiantes = estudiantes + temp.getDato().getCodigo() + ", " + temp.getDato().getNombre() + ", " + temp.getDato().getEdad() + " -> "; temp = temp.getSiguinte(); } return estudiantes; } public int pos(Estudiante o) { Nodo temp = raiz; for (int i = 1; temp != null; i++) { if (temp.getDato() == o) { return i; } temp = temp.getSiguinte(); } return -1; } public Estudiante peek() { return raiz.getDato(); } public boolean search(Estudiante o) { Nodo temp = raiz; while (temp != null) { if (temp.getDato() == o) { return true; } temp = temp.getSiguinte(); } return false; } public boolean searchCodigo(Estudiante o) { Nodo temp = raiz; while (temp != null) { if (temp.getDato().getCodigo() == o.getCodigo()) { return true; } temp = temp.getSiguinte(); } return false; } public boolean searchEdad(Estudiante o) { Nodo temp = raiz; while (temp != null) { if (temp.getDato().getEdad() == o.getEdad()) { return true; } temp = temp.getSiguinte(); } return false; } public boolean empty() { return raiz == null; } public String union(Pila grupo1, Pila grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Pila pilaUnion = new Pila(); while (temp1 != null) { if (pilaUnion.searchCodigo(temp1.getDato())) { } else { pilaUnion.push(temp1.getDato()); } temp1 = temp1.getSiguinte(); } while (temp2 != null) { if (pilaUnion.searchCodigo(temp2.getDato())) { } else { pilaUnion.push(temp2.getDato()); } temp2 = temp2.getSiguinte(); } return pilaUnion.imprimirUnion(); } public String interseccion(Pila grupo1, Pila grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Pila pilaInterseccion = new Pila(); while (temp1 != null) { while (temp2 != null) { if (temp1.getDato().getEdad() == temp2.getDato().getEdad()) { if (pilaInterseccion.search(temp1.getDato()) == false) { pilaInterseccion.push(temp1.getDato()); } if (pilaInterseccion.search(temp2.getDato()) == false) { pilaInterseccion.push(temp2.getDato()); } } temp2 = temp2.getSiguinte(); } temp2 = grupo2.raiz; temp1 = temp1.getSiguinte(); } return pilaInterseccion.imprimirInterseccion(); } public String diferencia(Pila grupo1, Pila grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Boolean diferente = false; Pila pilaDiferencia = new Pila(); while (temp1 != null) { if (grupo2.searchEdad(temp1.getDato())) { } else { pilaDiferencia.push(temp1.getDato()); } temp1 = temp1.getSiguinte(); } while (temp2 != null) { if (grupo1.searchEdad(temp2.getDato())) { } else { pilaDiferencia.push(temp2.getDato()); } temp2 = temp2.getSiguinte(); } return pilaDiferencia.imprimirInterseccion(); } public String pertenencia(Pila grupo1, Pila grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Pila pilaPertenencia = new Pila(); while (temp1 != null) { if (grupo2.search(temp1.getDato()) == false) { pilaPertenencia.push(temp1.getDato()); } temp1 = temp1.getSiguinte(); } while (temp2 != null) { if (grupo1.search(temp2.getDato()) == false) { pilaPertenencia.push(temp2.getDato()); } temp2 = temp2.getSiguinte(); } return pilaPertenencia.imprimirInterseccion(); } }
Clase Nodo para las colas:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package estructuradedatos.colas; import estructuradedatos.Estudiante; /** * * @author Usuario */ public class Nodo { private Estudiante dato; private Nodo siguinte; public Nodo(Estudiante dato) { this.dato = dato; } public Estudiante getDato() { return dato; } public void setDato(Estudiante dato) { this.dato = dato; } public Nodo getSiguinte() { return siguinte; } public void setSiguinte(Nodo siguinte) { this.siguinte = siguinte; } }
Clase Cola:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package estructuradedatos.colas; import estructuradedatos.Estudiante; /** * * @author Usuario */ public class Cola { Nodo raiz; public void add(Estudiante d) { Nodo nuevo = new Nodo(d); if (raiz == null) { raiz = nuevo; } else { if (d != null) { apuntarAlUltimo(nuevo); } } } public void apuntarAlUltimo(Nodo nuevo) { Nodo temp = raiz; while (temp.getSiguinte() != null) { temp = temp.getSiguinte(); } temp.setSiguinte(nuevo); } public Estudiante remove() { Nodo temp = raiz; raiz = raiz.getSiguinte(); return temp.getDato(); } public void imprimir() { Nodo temp = raiz; while (temp != null) { System.out.print(temp.getDato().getCodigo() + ", " + temp.getDato().getNombre() + ", " + temp.getDato().getEdad() + " ->"); temp = temp.getSiguinte(); } } public String imprimirUnion() { Nodo temp = raiz; String codigos = ""; while (temp != null) { codigos = codigos + temp.getDato().getCodigo() + " -> "; temp = temp.getSiguinte(); } return codigos; } public String imprimirInterseccion() { Nodo temp = raiz; String estudiantes = ""; while (temp != null) { estudiantes = estudiantes + temp.getDato().getCodigo() + ", " + temp.getDato().getNombre() + ", " + temp.getDato().getEdad() + " -> "; temp = temp.getSiguinte(); } return estudiantes; } public int pos(Estudiante o) { Nodo temp = raiz; for (int i = 1; temp != null; i++) { if (temp.getDato() == o) { return i; } temp = temp.getSiguinte(); } return -1; } public Boolean search(Estudiante o) { Nodo temp = raiz; while (temp != null) { if (temp.getDato() == o) { return true; } temp = temp.getSiguinte(); } return false; } public Boolean searchEdad(Estudiante o) { Nodo temp = raiz; while (temp != null) { if (temp.getDato().getEdad() == o.getEdad()) { return true; } temp = temp.getSiguinte(); } return false; } public Boolean searchCodigo(Estudiante o) { Nodo temp = raiz; while (temp != null) { if (temp.getDato().getCodigo() == o.getCodigo()) { return true; } temp = temp.getSiguinte(); } return false; } public boolean empty() { return raiz == null; } public String union(Cola grupo1, Cola grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Cola colaUnion = new Cola(); while (temp1 != null) { if (colaUnion.searchCodigo(temp1.getDato())) { } else { colaUnion.add(temp1.getDato()); } temp1 = temp1.getSiguinte(); } while (temp2 != null) { if (colaUnion.searchCodigo(temp2.getDato())) { } else { colaUnion.add(temp2.getDato()); } temp2 = temp2.getSiguinte(); } return colaUnion.imprimirUnion(); } public String interseccion(Cola grupo1, Cola grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Cola colaInterseccion = new Cola(); while (temp1 != null) { while (temp2 != null) { if (temp1.getDato().getEdad() == temp2.getDato().getEdad()) { if (colaInterseccion.search(temp1.getDato()) == false) { colaInterseccion.add(temp1.getDato()); } if (colaInterseccion.search(temp2.getDato()) == false) { colaInterseccion.add(temp2.getDato()); } } temp2 = temp2.getSiguinte(); } temp2 = grupo2.raiz; temp1 = temp1.getSiguinte(); } return colaInterseccion.imprimirInterseccion(); } public String diferencia(Cola grupo1, Cola grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Boolean diferente = false; Cola colaDiferencia = new Cola(); while (temp1 != null) { if (grupo2.searchEdad(temp1.getDato())) { } else { colaDiferencia.add(temp1.getDato()); } temp1 = temp1.getSiguinte(); } while (temp2 != null) { if (grupo1.searchEdad(temp2.getDato())) { } else { colaDiferencia.add(temp2.getDato()); } temp2 = temp2.getSiguinte(); } return colaDiferencia.imprimirInterseccion(); } public String pertenencia(Cola grupo1, Cola grupo2) { Nodo temp1 = grupo1.raiz; Nodo temp2 = grupo2.raiz; Cola colaPertenencia = new Cola(); while (temp1 != null) { if (grupo2.search(temp1.getDato()) == false) { colaPertenencia.add(temp1.getDato()); } temp1 = temp1.getSiguinte(); } while (temp2 != null) { if (grupo1.search(temp2.getDato()) == false) { colaPertenencia.add(temp2.getDato()); } temp2 = temp2.getSiguinte(); } return colaPertenencia.imprimirInterseccion(); } }
Comentarios
Publicar un comentario