diff --git a/src/cl/cromer/estructuras/Grafico.java b/src/cl/cromer/estructuras/Grafico.java index 0de1023..a49a180 100644 --- a/src/cl/cromer/estructuras/Grafico.java +++ b/src/cl/cromer/estructuras/Grafico.java @@ -3,10 +3,7 @@ package cl.cromer.estructuras; import javafx.animation.Animation; import javafx.animation.PauseTransition; import javafx.animation.SequentialTransition; -import javafx.geometry.Pos; import javafx.scene.Scene; -import javafx.scene.canvas.Canvas; -import javafx.scene.canvas.GraphicsContext; import javafx.scene.layout.Pane; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; diff --git a/src/cl/cromer/estructuras/ListaEnlazada.java b/src/cl/cromer/estructuras/ListaEnlazada.java index 35ea52b..d93c47d 100644 --- a/src/cl/cromer/estructuras/ListaEnlazada.java +++ b/src/cl/cromer/estructuras/ListaEnlazada.java @@ -61,7 +61,7 @@ final public class ListaEnlazada { // La lista no es vacia Enlace lista = this.lista; while (lista.getLlave() != llave) { - // Buscar hasta la llave es encontraddo + // Buscar hasta la llave es encontrado if (lista.getSiguente() != null) { // Buscar en la sigenute enlace lista = (Enlace) lista.getSiguente(); @@ -88,13 +88,13 @@ final public class ListaEnlazada { public boolean insertar(int llave) { if (buscar(llave) == null) { // Crear una enlace y agregarla a la lista - Enlace nueva = new EnlaceNormal(); - nueva.setLlave(llave); - nueva.setSiguente(lista); + Enlace nuevo = new EnlaceNormal(); + nuevo.setLlave(llave); + nuevo.setSiguente(lista); if (lista != null) { - lista.setPrevio(nueva); + lista.setPrevio(nuevo); } - lista = nueva; + lista = nuevo; size++; return true; } diff --git a/src/cl/cromer/estructuras/ListaEnlazadaCircular.java b/src/cl/cromer/estructuras/ListaEnlazadaCircular.java index 509a9a3..f230433 100644 --- a/src/cl/cromer/estructuras/ListaEnlazadaCircular.java +++ b/src/cl/cromer/estructuras/ListaEnlazadaCircular.java @@ -132,12 +132,14 @@ final public class ListaEnlazadaCircular { previo = lista; lista = (Enlace) lista.getSiguente(); } - else { - // No se encuentra - return false; - } i++; } + + if (lista.getLlave() != llave) { + // No se encontró + return false; + } + // Se encontró if (lista == this.primer) { // Si es la primera enlace, cambiarla al siguente enlace @@ -175,5 +177,4 @@ final public class ListaEnlazadaCircular { return null; } } -} - +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/ListaEnlazdaController.java b/src/cl/cromer/estructuras/ListaEnlazdaController.java index 8a599a0..e998e9b 100644 --- a/src/cl/cromer/estructuras/ListaEnlazdaController.java +++ b/src/cl/cromer/estructuras/ListaEnlazdaController.java @@ -3,7 +3,6 @@ package cl.cromer.estructuras; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.Scene; -import javafx.scene.canvas.Canvas; import javafx.scene.control.ButtonBar; import javafx.scene.control.ButtonType; import javafx.scene.control.Dialog; @@ -13,6 +12,7 @@ import javafx.scene.text.Text; import java.net.URL; import java.util.Random; import java.util.ResourceBundle; +import java.util.Scanner; import java.util.logging.Level; /** @@ -151,7 +151,7 @@ public class ListaEnlazdaController implements Initializable { initializeLista(); } - /*String tipo; + String tipo; switch (listaEnlazadaTipos.getTipo()) { case ListaEnlazadaTipos.SIMPLE: tipo = "Simple"; @@ -160,15 +160,15 @@ public class ListaEnlazdaController implements Initializable { tipo = "Circular"; break; case ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA: - tipo = "Doblemente"; + tipo = "Doble"; break; default: tipo = "Simple"; - }*/ + } // Mostrar el codigo - //String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/insertar")).useDelimiter("\\Z").next(); - //codigoLista.setText(codigoTexto); + String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/insertar")).useDelimiter("\\Z").next(); + codigoLista.setText(codigoTexto); if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) { try { @@ -212,10 +212,24 @@ public class ListaEnlazdaController implements Initializable { initializeLista(); } + String tipo; + switch (listaEnlazadaTipos.getTipo()) { + case ListaEnlazadaTipos.SIMPLE: + tipo = "Simple"; + break; + case ListaEnlazadaTipos.CIRCULAR: + tipo = "Circular"; + break; + case ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA: + tipo = "Doble"; + break; + default: + tipo = "Simple"; + } + // Mostrar el codigo - //String tipo = (array.isOrdered())?"Ordenado":"Simple"; - //String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/array" + tipo + "/eliminar")).useDelimiter("\\Z").next(); - //codigoLista.setText(codigoTexto); + String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/eliminar")).useDelimiter("\\Z").next(); + codigoLista.setText(codigoTexto); try { if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) { @@ -255,10 +269,24 @@ public class ListaEnlazdaController implements Initializable { initializeLista(); } + String tipo; + switch (listaEnlazadaTipos.getTipo()) { + case ListaEnlazadaTipos.SIMPLE: + tipo = "Simple"; + break; + case ListaEnlazadaTipos.CIRCULAR: + tipo = "Circular"; + break; + case ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA: + tipo = "Doble"; + break; + default: + tipo = "Simple"; + } + // Mostrar el codigo - //String tipo = (array.isOrdered())?"Ordenado":"Simple"; - //String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/array" + tipo + "/buscar")).useDelimiter("\\Z").next(); - //codigoLista.setText(codigoTexto); + String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/buscar")).useDelimiter("\\Z").next(); + codigoLista.setText(codigoTexto); try { if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) { diff --git a/src/cl/cromer/estructuras/TextFieldLimited.java b/src/cl/cromer/estructuras/TextFieldLimited.java index 6c02edf..362d27d 100644 --- a/src/cl/cromer/estructuras/TextFieldLimited.java +++ b/src/cl/cromer/estructuras/TextFieldLimited.java @@ -34,6 +34,7 @@ public class TextFieldLimited extends TextField { * Lista de estilos aplicable. * @return List: La lista de estilos. */ + @SuppressWarnings("unused") public static List> getClassCssMetaData() { return TextFieldLimited.StyleableProperties.STYLEABLES; } @@ -93,6 +94,7 @@ public class TextFieldLimited extends TextField { * Asignar un valor maximo de caracters permitidio en el TextFieldLimited. * @param value int: La cantidad maxima. */ + @SuppressWarnings("unused") public final void setMaxLength(int value) { if (maxLength != null || value > 0) { maxLengthProperty().set(value); @@ -138,6 +140,7 @@ public class TextFieldLimited extends TextField { } @Override + @SuppressWarnings("unchecked") public StyleableProperty getStyleableProperty(TextFieldLimited node) { return (StyleableProperty) node.maxLengthProperty(); } diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaCircular/buscar b/src/cl/cromer/estructuras/code/listaEnlazadaCircular/buscar new file mode 100644 index 0000000..72ed5a8 --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaCircular/buscar @@ -0,0 +1,47 @@ +public Enlace buscar(int llave) { + if (this.primer != null) { + // La lista no es vacia + Enlace lista = this.primer; + int i = 0; + while (lista.getLlave() != llave && i < elementos) { + // Buscar hasta la llave es encontrado + lista = lista.getSiguente(); + i++; + } + + if (lista.getLlave() == llave) { + // Devoler el enlace encontrado. + return lista; + } + else { + // No se encontró. + return null; + } + } + else { + // La lista es vacia, devolver null + return null; + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaCircular/eliminar b/src/cl/cromer/estructuras/code/listaEnlazadaCircular/eliminar new file mode 100644 index 0000000..4df2940 --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaCircular/eliminar @@ -0,0 +1,57 @@ +public void eliminar(int llave) { + if (primer != null) { + // Crear una lista temporario para trabajar + Enlace lista = this.primer; + // Guardar el enlace previo + Enlace previo = lista; + // Solo busca mientras que i es menor que la cantidad de enlaces + int i = 0; + while (lista.getLlave() != llave && i < elementos) { + // Buscar hasta la llave es encontraddo + if (lista.getSiguente() != null) { + // Buscar en el sigenute enlace + previo = lista; + lista = lista.getSiguente(); + } + i++ + } + + if (lista.getLlave != llave) { + // No se encontró + return; + } + + // Se encontró + if (lista == this.lista) { + // Si es el primer enlace, cambiarlo al siguente enlace + this.lista = this.lista.getSiguente(); + } + else { + // Sino cortar este enlace de la lista + previo.setSiguente(lista.getSiguente()); + } + elementos--; + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaCircular/insertar b/src/cl/cromer/estructuras/code/listaEnlazadaCircular/insertar new file mode 100644 index 0000000..f5ffca7 --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaCircular/insertar @@ -0,0 +1,39 @@ +public void insertar(int llave) { + if (buscar(llave) == null) { + // Crear un enlace nuevo + Enlace nuevo = new Enlace(primer, llave); + + if (primer == null) { + // Si el primer enlace es null, el ul + ultimo = nuevo; + } + + // El primer es el nuevo. + primer = nuevo; + // El ultimo apunta al primer. + ultimo.setSiguente(primer); + elementos++; + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaDoble/buscar b/src/cl/cromer/estructuras/code/listaEnlazadaDoble/buscar new file mode 100644 index 0000000..7074d01 --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaDoble/buscar @@ -0,0 +1,54 @@ +public Enlace buscar(int llave) { + if (this.lista != null) { + // La lista no es vacia + Enlace lista = this.lista; + while (lista.getLlave() != llave) { + // Buscar hasta la llave es encontraddo + if (lista.getSiguente() != null) { + // Buscar en el sigenute enlace + lista = lista.getSiguente(); + } + else { + // No se encuentra + return null; + } + } + // Se encontró, devolver el enlace + return lista; + } + else { + // La lista es vacia, devolver null + return null; + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + private Enlace previo; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } + + public Enlace getPrevio() { + return previo; + } + + public void setPrevio(Enlace previo) { + this.previo = previo; + } +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaDoble/eliminar b/src/cl/cromer/estructuras/code/listaEnlazadaDoble/eliminar new file mode 100644 index 0000000..f5069e3 --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaDoble/eliminar @@ -0,0 +1,63 @@ +public void eliminar(int llave) { + if (lista != null) { + // Crear una lista temporario para trabajar + Enlace lista = this.lista; + // Guardar el enlace previo + Enlace previo = lista; + while (lista.getLlave() != llave) { + // Buscar hasta la llave es encontraddo + if (lista.getSiguente() != null) { + // Buscar en el sigenute enlace + previo = lista; + lista = lista.getSiguente(); + } + else { + // No se encuentra la llave + return; + } + } + // Se encontró + if (lista == this.lista) { + // Si es el primer enlace, cambiarlo al siguente enlace + this.lista = this.lista.getSiguente(); + if (this.lista.getPrevio() != null) { + this.lista.setPrevio(null); + } + } + else { + // Sino cortar este enlace de la lista + previo.setSiguente(lista.getSiguente()); + } + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + private Enlace previo; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } + + public Enlace getPrevio() { + return previo; + } + + public void setPrevio(Enlace previo) { + this.previo = previo; + } +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaDoble/insertar b/src/cl/cromer/estructuras/code/listaEnlazadaDoble/insertar new file mode 100644 index 0000000..504af8b --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaDoble/insertar @@ -0,0 +1,43 @@ +public void insertar(int llave) { + if (buscar(llave) == null) { + // Crear un enlace nuevo + Enlace nuevo = new Enlace(lista, llave); + if (lista != null) { + // El previo es el nuevo. + lista.setPrevio(nuevo); + } + // Agregar el enlace a la lista + lista = nuevo; + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + private Enlace previo; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } + + public Enlace getPrevio() { + return previo; + } + + public void setPrevio(Enlace previo) { + this.previo = previo; + } +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaSimple/buscar b/src/cl/cromer/estructuras/code/listaEnlazadaSimple/buscar new file mode 100644 index 0000000..c0bf7a4 --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaSimple/buscar @@ -0,0 +1,45 @@ +public Enlace buscar(int llave) { + if (this.lista != null) { + // La lista no es vacia + Enlace lista = this.lista; + while (lista.getLlave() != llave) { + // Buscar hasta la llave es encontraddo + if (lista.getSiguente() != null) { + // Buscar en el sigenute enlace + lista = lista.getSiguente(); + } + else { + // No se encuentra + return null; + } + } + // Se encontró, devolver el enlace + return lista; + } + else { + // La lista es vacia, devolver null + return null; + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaSimple/eliminar b/src/cl/cromer/estructuras/code/listaEnlazadaSimple/eliminar new file mode 100644 index 0000000..4c7551b --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaSimple/eliminar @@ -0,0 +1,51 @@ +public void eliminar(int llave) { + if (lista != null) { + // Crear una lista temporario para trabajar + Enlace lista = this.lista; + // Guardar el enlace previo + Enlace previo = lista; + while (lista.getLlave() != llave) { + // Buscar hasta la llave es encontraddo + if (lista.getSiguente() != null) { + // Buscar en el sigenute enlace + previo = lista; + lista = lista.getSiguente(); + } + else { + // No se encuentra la llave + return; + } + } + // Se encontró + if (lista == this.lista) { + // Si es el primer enlace, cambiarlo al siguente enlace + this.lista = this.lista.getSiguente(); + } + else { + // Sino cortar este enlace de la lista + previo.setSiguente(lista.getSiguente()); + } + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } +} \ No newline at end of file diff --git a/src/cl/cromer/estructuras/code/listaEnlazadaSimple/insertar b/src/cl/cromer/estructuras/code/listaEnlazadaSimple/insertar new file mode 100644 index 0000000..8ae5fc2 --- /dev/null +++ b/src/cl/cromer/estructuras/code/listaEnlazadaSimple/insertar @@ -0,0 +1,30 @@ +public void insertar(int llave) { + if (buscar(llave) == null) { + // Crear un enlace nuevo + Enlace nuevo = new Enlace(lista, llave); + // Agregar el enlace a la lista + lista = nuevo; + } +} + +final public class Enlace { + private int llave; + private Enlace siguente; + + public Enlace(Enlace siguiente, int llave) { + this.siguente = siguente; + this.llave = llave; + } + + public int getLlave() { + return llave; + } + + public Enlace getSiguente() { + return siguente; + } + + public void setSiguente(Enlace siguente) { + this.siguente = siguente; + } +} \ No newline at end of file