Changed indentations.
This commit is contained in:
parent
71bf0201e6
commit
4cc0349ffe
@ -59,7 +59,7 @@ public class ArrayController implements Initializable {
|
|||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -146,7 +146,7 @@ public class ArrayController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/array" + tipo + "/insertar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/array" + tipo + "/insertar")).useDelimiter("\\Z").next();
|
||||||
codigoArray.setText(codigoTexto);
|
codigoArray.setText(codigoTexto);
|
||||||
|
|
||||||
if (valorArray.getText() != null && !valorArray.getText().trim().equals("")) {
|
if (valorArray.getText() != null && ! valorArray.getText().trim().equals("")) {
|
||||||
try {
|
try {
|
||||||
boolean exito = array.insertar(Integer.valueOf(valorArray.getText()));
|
boolean exito = array.insertar(Integer.valueOf(valorArray.getText()));
|
||||||
if (exito) {
|
if (exito) {
|
||||||
@ -188,7 +188,7 @@ public class ArrayController implements Initializable {
|
|||||||
codigoArray.setText(codigoTexto);
|
codigoArray.setText(codigoTexto);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (valorArray.getText() != null && !valorArray.getText().trim().equals("")) {
|
if (valorArray.getText() != null && ! valorArray.getText().trim().equals("")) {
|
||||||
boolean exito = array.eliminar(Integer.valueOf(valorArray.getText()));
|
boolean exito = array.eliminar(Integer.valueOf(valorArray.getText()));
|
||||||
if (exito) {
|
if (exito) {
|
||||||
valorArray.setText("");
|
valorArray.setText("");
|
||||||
@ -225,9 +225,9 @@ public class ArrayController implements Initializable {
|
|||||||
codigoArray.setText(codigoTexto);
|
codigoArray.setText(codigoTexto);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (valorArray.getText() != null && !valorArray.getText().trim().equals("")) {
|
if (valorArray.getText() != null && ! valorArray.getText().trim().equals("")) {
|
||||||
int encontrado = array.buscar(Integer.valueOf(valorArray.getText()));
|
int encontrado = array.buscar(Integer.valueOf(valorArray.getText()));
|
||||||
if (encontrado != -1) {
|
if (encontrado != - 1) {
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
grafico.destacar("#caja_" + encontrado, Grafico.RECTANGULO);
|
grafico.destacar("#caja_" + encontrado, Grafico.RECTANGULO);
|
||||||
@ -246,5 +246,5 @@ public class ArrayController implements Initializable {
|
|||||||
Logs.log(Level.WARNING, "No es tipo int.");
|
Logs.log(Level.WARNING, "No es tipo int.");
|
||||||
Main.mostrarError(resourceBundle.getString("arrayNoValor"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("arrayNoValor"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,44 +6,45 @@ package cl.cromer.estructuras;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final public class ArrayTipos {
|
final public class ArrayTipos {
|
||||||
/**
|
/**
|
||||||
* Tipo de array simple.
|
* Tipo de array simple.
|
||||||
*/
|
*/
|
||||||
static final public int SIMPLE = 0;
|
static final public int SIMPLE = 0;
|
||||||
/**
|
|
||||||
* Tipo de array ordenado.
|
|
||||||
*/
|
|
||||||
static final public int ORDENADO = 1;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El tipo que está elegido.
|
* Tipo de array ordenado.
|
||||||
*/
|
*/
|
||||||
final private int tipo;
|
static final public int ORDENADO = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicilizar el tipo.
|
* El tipo que está elegido.
|
||||||
*
|
*/
|
||||||
* @param tipo int: Tipo de array, {@value #SIMPLE} o {@value #ORDENADO}
|
final private int tipo;
|
||||||
*/
|
|
||||||
public ArrayTipos(int tipo) {
|
|
||||||
switch (tipo) {
|
|
||||||
case SIMPLE:
|
|
||||||
this.tipo = SIMPLE;
|
|
||||||
break;
|
|
||||||
case ORDENADO:
|
|
||||||
this.tipo = ORDENADO;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
this.tipo = SIMPLE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el tipo.
|
* Inicilizar el tipo.
|
||||||
*
|
*
|
||||||
* @return int: El tipo de array.
|
* @param tipo int: Tipo de array, {@value #SIMPLE} o {@value #ORDENADO}
|
||||||
*/
|
*/
|
||||||
public int getTipo() {
|
public ArrayTipos(int tipo) {
|
||||||
return tipo;
|
switch (tipo) {
|
||||||
}
|
case SIMPLE:
|
||||||
|
this.tipo = SIMPLE;
|
||||||
|
break;
|
||||||
|
case ORDENADO:
|
||||||
|
this.tipo = ORDENADO;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.tipo = SIMPLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Devolver el tipo.
|
||||||
|
*
|
||||||
|
* @return int: El tipo de array.
|
||||||
|
*/
|
||||||
|
public int getTipo() {
|
||||||
|
return tipo;
|
||||||
|
}
|
||||||
}
|
}
|
@ -46,7 +46,7 @@ public class BurbujaController implements Initializable {
|
|||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -112,7 +112,7 @@ public class BurbujaController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/burbuja/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/burbuja/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoBurbuja.setText(codigoTexto);
|
codigoBurbuja.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.burbuja(true)) {
|
if (! array.burbuja(true)) {
|
||||||
Main.mostrarError(resourceBundle.getString("burbujaYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("burbujaYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,10 +132,10 @@ public class BurbujaController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/burbuja/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/burbuja/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoBurbuja.setText(codigoTexto);
|
codigoBurbuja.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.burbuja(false)) {
|
if (! array.burbuja(false)) {
|
||||||
Main.mostrarError(resourceBundle.getString("burbujaYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("burbujaYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,118 +8,119 @@ import java.util.Random;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final public class Cola {
|
final public class Cola {
|
||||||
/**
|
/**
|
||||||
* La cola.
|
* La cola.
|
||||||
*/
|
*/
|
||||||
private String cola[];
|
private String cola[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La cantidad de elementos que están en la cola.
|
* La cantidad de elementos que están en la cola.
|
||||||
*/
|
*/
|
||||||
private int size;
|
private int size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicializar.
|
* Inicializar.
|
||||||
*/
|
*/
|
||||||
public Cola() {
|
public Cola() {
|
||||||
this.cola = null;
|
this.cola = null;
|
||||||
size = 0;
|
size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pop un valor del principio de la cola.
|
* Pop un valor del principio de la cola.
|
||||||
*
|
*
|
||||||
* @return boolean: Verdad si fue exitoso.
|
* @return boolean: Verdad si fue exitoso.
|
||||||
*/
|
*/
|
||||||
public boolean pop() {
|
public boolean pop() {
|
||||||
if (this.cola != null) {
|
if (this.cola != null) {
|
||||||
String cola[] = new String[this.cola.length - 1];
|
String cola[] = new String[this.cola.length - 1];
|
||||||
// Nueva array sin el valor del primer
|
// Nueva array sin el valor del primer
|
||||||
System.arraycopy(this.cola, 1, cola, 0, cola.length);
|
System.arraycopy(this.cola, 1, cola, 0, cola.length);
|
||||||
this.cola = cola;
|
this.cola = cola;
|
||||||
size--;
|
size--;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Peek al valor que está al principio de la cola.
|
* Peek al valor que está al principio de la cola.
|
||||||
*
|
*
|
||||||
* @return int: El valor que está al principio de la cola.
|
* @return int: El valor que está al principio de la cola.
|
||||||
*/
|
*/
|
||||||
public int peek() {
|
public int peek() {
|
||||||
if (this.cola != null && size() > 0) {
|
if (this.cola != null && size() > 0) {
|
||||||
return Integer.valueOf(cola[0]);
|
return Integer.valueOf(cola[0]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return Integer.MIN_VALUE;
|
return Integer.MIN_VALUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la cantidad de elementos que están en la cola.
|
* Devolver la cantidad de elementos que están en la cola.
|
||||||
*
|
*
|
||||||
* @return int: La cantidad de elementos.
|
* @return int: La cantidad de elementos.
|
||||||
*/
|
*/
|
||||||
public int size() {
|
public int size() {
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el valor que está en un indice de la cola.
|
* Devolver el valor que está en un indice de la cola.
|
||||||
*
|
*
|
||||||
* @param indice int: El indice que desea devolver.
|
* @param indice int: El indice que desea devolver.
|
||||||
* @return String: El valor que está guardado en el indice.
|
*
|
||||||
*/
|
* @return String: El valor que está guardado en el indice.
|
||||||
public String getIndice(int indice) {
|
*/
|
||||||
if (cola != null && indice >= 0 && indice < cola.length) {
|
public String getIndice(int indice) {
|
||||||
return cola[indice];
|
if (cola != null && indice >= 0 && indice < cola.length) {
|
||||||
}
|
return cola[indice];
|
||||||
else {
|
}
|
||||||
return null;
|
else {
|
||||||
}
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Llenar la cola con valores al azar.
|
* Llenar la cola con valores al azar.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("Duplicates")
|
@SuppressWarnings("Duplicates")
|
||||||
public void llenar() {
|
public void llenar() {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
int maximo = 99;
|
int maximo = 99;
|
||||||
int minimo = 0;
|
int minimo = 0;
|
||||||
int rango = maximo - minimo + 1;
|
int rango = maximo - minimo + 1;
|
||||||
|
|
||||||
for (int i = size(); i < 10; i++) {
|
for (int i = size(); i < 10; i++) {
|
||||||
int numero = random.nextInt(rango) + minimo;
|
int numero = random.nextInt(rango) + minimo;
|
||||||
push(numero);
|
push(numero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Push un valor en la cola encima.
|
* Push un valor en la cola encima.
|
||||||
*
|
*
|
||||||
* @param valor int: El valor a push.
|
* @param valor int: El valor a push.
|
||||||
*/
|
*/
|
||||||
public void push(int valor) {
|
public void push(int valor) {
|
||||||
if (this.cola != null) {
|
if (this.cola != null) {
|
||||||
String cola[] = new String[this.cola.length + 1];
|
String cola[] = new String[this.cola.length + 1];
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < this.cola.length; i++) {
|
for (i = 0; i < this.cola.length; i++) {
|
||||||
cola[i] = this.cola[i];
|
cola[i] = this.cola[i];
|
||||||
}
|
}
|
||||||
cola[i] = String.valueOf(valor);
|
cola[i] = String.valueOf(valor);
|
||||||
this.cola = cola;
|
this.cola = cola;
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String pila[] = new String[1];
|
String pila[] = new String[1];
|
||||||
pila[0] = String.valueOf(valor);
|
pila[0] = String.valueOf(valor);
|
||||||
this.cola = pila;
|
this.cola = pila;
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,190 +17,190 @@ import java.util.logging.Level;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
public class ColaController implements Initializable {
|
public class ColaController implements Initializable {
|
||||||
/**
|
/**
|
||||||
* La caja para ingresar textos.
|
* La caja para ingresar textos.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private TextFieldLimited valorCola;
|
private TextFieldLimited valorCola;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde poner el contenido de array.
|
* Donde poner el contenido de array.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private VBox contenidoCola;
|
private VBox contenidoCola;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde va el codigo a mostrar a la pantalla.
|
* Donde va el codigo a mostrar a la pantalla.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private Text codigoCola;
|
private Text codigoCola;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La escena donde está cosas graficas.
|
* La escena donde está cosas graficas.
|
||||||
*/
|
*/
|
||||||
private Scene scene;
|
private Scene scene;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde está guardado los idiomas.
|
* Donde está guardado los idiomas.
|
||||||
*/
|
*/
|
||||||
private ResourceBundle resourceBundle;
|
private ResourceBundle resourceBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La cola usado en la aplicación.
|
* La cola usado en la aplicación.
|
||||||
*/
|
*/
|
||||||
private Cola cola;
|
private Cola cola;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Grafico rectangulos.
|
* Grafico rectangulos.
|
||||||
*/
|
*/
|
||||||
private Grafico grafico;
|
private Grafico grafico;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void initialize(URL location, ResourceBundle resourceBundle) {
|
public void initialize(URL location, ResourceBundle resourceBundle) {
|
||||||
this.resourceBundle = resourceBundle;
|
this.resourceBundle = resourceBundle;
|
||||||
|
|
||||||
cola = new Cola();
|
cola = new Cola();
|
||||||
|
|
||||||
scene = null;
|
scene = null;
|
||||||
Colores colores = new Colores();
|
Colores colores = new Colores();
|
||||||
|
|
||||||
for (int i = 9; i >= 0; i--) {
|
for (int i = 9; i >= 0; i--) {
|
||||||
contenidoCola.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i)));
|
contenidoCola.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i)));
|
||||||
colores.siguinteColor();
|
colores.siguinteColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Llenar la cola con numeros al azar.
|
* Llenar la cola con numeros al azar.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonLlenar() {
|
protected void botonLlenar() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoCola.getScene();
|
scene = contenidoCola.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
cola.llenar();
|
cola.llenar();
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Poner los valores en el grafico.
|
* Poner los valores en el grafico.
|
||||||
*/
|
*/
|
||||||
private void generarGrafico() {
|
private void generarGrafico() {
|
||||||
grafico.removerDestacar();
|
grafico.removerDestacar();
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
|
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
|
||||||
text.setText(cola.getIndice(i));
|
text.setText(cola.getIndice(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vaciar la cola de todos los valores.
|
* Vaciar la cola de todos los valores.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonVaciar() {
|
protected void botonVaciar() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoCola.getScene();
|
scene = contenidoCola.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
cola = new Cola();
|
cola = new Cola();
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Push un valor a la cola y mostrar el codigo en la pantalla.
|
* Push un valor a la cola y mostrar el codigo en la pantalla.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonPush() {
|
protected void botonPush() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoCola.getScene();
|
scene = contenidoCola.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/cola/push")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/cola/push")).useDelimiter("\\Z").next();
|
||||||
codigoCola.setText(codigoTexto);
|
codigoCola.setText(codigoTexto);
|
||||||
|
|
||||||
if (valorCola.getText() != null && !valorCola.getText().trim().equals("")) {
|
if (valorCola.getText() != null && ! valorCola.getText().trim().equals("")) {
|
||||||
try {
|
try {
|
||||||
if (cola.size() < 10) {
|
if (cola.size() < 10) {
|
||||||
cola.push(Integer.valueOf(valorCola.getText()));
|
cola.push(Integer.valueOf(valorCola.getText()));
|
||||||
valorCola.setText("");
|
valorCola.setText("");
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Main.mostrarError(resourceBundle.getString("colaLlena"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("colaLlena"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (NumberFormatException exception) {
|
catch (NumberFormatException exception) {
|
||||||
// El error no es fatal, sigue
|
// El error no es fatal, sigue
|
||||||
Logs.log(Level.WARNING, "No es tipo int.");
|
Logs.log(Level.WARNING, "No es tipo int.");
|
||||||
Main.mostrarError(resourceBundle.getString("colaNoValor"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("colaNoValor"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Main.mostrarError(resourceBundle.getString("colaNoValor"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("colaNoValor"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pop un valor de la pila si existe y mostrar el codigo en la pantalla.
|
* Pop un valor de la pila si existe y mostrar el codigo en la pantalla.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonPop() {
|
protected void botonPop() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoCola.getScene();
|
scene = contenidoCola.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/cola/pop")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/cola/pop")).useDelimiter("\\Z").next();
|
||||||
codigoCola.setText(codigoTexto);
|
codigoCola.setText(codigoTexto);
|
||||||
|
|
||||||
if (cola.size() > 0) {
|
if (cola.size() > 0) {
|
||||||
if (!cola.pop()) {
|
if (! cola.pop()) {
|
||||||
Main.mostrarError(resourceBundle.getString("colaVacia"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("colaVacia"), resourceBundle);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Main.mostrarError(resourceBundle.getString("colaVacia"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("colaVacia"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Peek a ver si existe un elemento en la pila y mostrar el codigo en la pantalla
|
* Peek a ver si existe un elemento en la pila y mostrar el codigo en la pantalla
|
||||||
* Si existe un valor destacarlo.
|
* Si existe un valor destacarlo.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonPeek() {
|
protected void botonPeek() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoCola.getScene();
|
scene = contenidoCola.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/cola/peek")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/cola/peek")).useDelimiter("\\Z").next();
|
||||||
codigoCola.setText(codigoTexto);
|
codigoCola.setText(codigoTexto);
|
||||||
|
|
||||||
int encontrado = cola.peek();
|
int encontrado = cola.peek();
|
||||||
if (encontrado != Integer.MIN_VALUE) {
|
if (encontrado != Integer.MIN_VALUE) {
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
grafico.destacar("#caja_" + 0, Grafico.RECTANGULO);
|
grafico.destacar("#caja_" + 0, Grafico.RECTANGULO);
|
||||||
grafico.destacar("#texto_" + 0, Grafico.TEXTO);
|
grafico.destacar("#texto_" + 0, Grafico.TEXTO);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Main.mostrarError(resourceBundle.getString("colaVacia"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("colaVacia"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,90 +8,90 @@ import javafx.scene.paint.Color;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
public class Colores {
|
public class Colores {
|
||||||
/**
|
/**
|
||||||
* Cuantos colores estan definidos en esta clase.
|
* Cuantos colores estan definidos en esta clase.
|
||||||
*/
|
*/
|
||||||
static final public int MAX_COLORS = 7;
|
static final public int MAX_COLORS = 7;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El color actual en forma numerica.
|
* El color actual en forma numerica.
|
||||||
*/
|
*/
|
||||||
private int color;
|
private int color;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El color de texto actual.
|
* El color de texto actual.
|
||||||
*/
|
*/
|
||||||
private Color texto;
|
private Color texto;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El color de fondo actual.
|
* El color de fondo actual.
|
||||||
*/
|
*/
|
||||||
private Color fondo;
|
private Color fondo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicializar el primer color.
|
* Inicializar el primer color.
|
||||||
*/
|
*/
|
||||||
public Colores() {
|
public Colores() {
|
||||||
siguinteColor();
|
siguinteColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el color al siguinte. Si no hay, voler al primer.
|
* Cambiar el color al siguinte. Si no hay, voler al primer.
|
||||||
*/
|
*/
|
||||||
public void siguinteColor() {
|
public void siguinteColor() {
|
||||||
switch (color) {
|
switch (color) {
|
||||||
case 1:
|
case 1:
|
||||||
color = 2;
|
color = 2;
|
||||||
texto = Color.WHITE;
|
texto = Color.WHITE;
|
||||||
fondo = Color.RED;
|
fondo = Color.RED;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
color = 3;
|
color = 3;
|
||||||
texto = Color.BLACK;
|
texto = Color.BLACK;
|
||||||
fondo = Color.WHITE;
|
fondo = Color.WHITE;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
color = 4;
|
color = 4;
|
||||||
texto = Color.BLACK;
|
texto = Color.BLACK;
|
||||||
fondo = Color.PINK;
|
fondo = Color.PINK;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
color = 5;
|
color = 5;
|
||||||
texto = Color.BLACK;
|
texto = Color.BLACK;
|
||||||
fondo = Color.YELLOW;
|
fondo = Color.YELLOW;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
color = 6;
|
color = 6;
|
||||||
texto = Color.BLACK;
|
texto = Color.BLACK;
|
||||||
fondo = Color.GREEN;
|
fondo = Color.GREEN;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
color = 7;
|
color = 7;
|
||||||
texto = Color.BLACK;
|
texto = Color.BLACK;
|
||||||
fondo = Color.ORANGE;
|
fondo = Color.ORANGE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
color = 1;
|
color = 1;
|
||||||
texto = Color.WHITE;
|
texto = Color.WHITE;
|
||||||
fondo = Color.BLUE;
|
fondo = Color.BLUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el color del texto actual.
|
* Devolver el color del texto actual.
|
||||||
*
|
*
|
||||||
* @return Color: Color del texto.
|
* @return Color: Color del texto.
|
||||||
*/
|
*/
|
||||||
public Color getTexto() {
|
public Color getTexto() {
|
||||||
return texto;
|
return texto;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el color del fondo actual.
|
* Devolver el color del fondo actual.
|
||||||
*
|
*
|
||||||
* @return Color: Color del fondo.
|
* @return Color: Color del fondo.
|
||||||
*/
|
*/
|
||||||
public Color getFondo() {
|
public Color getFondo() {
|
||||||
return fondo;
|
return fondo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,45 +6,45 @@ package cl.cromer.estructuras;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
interface Enlace {
|
interface Enlace {
|
||||||
/**
|
/**
|
||||||
* Devolver la llave.
|
* Devolver la llave.
|
||||||
*
|
*
|
||||||
* @return int: La llave.
|
* @return int: La llave.
|
||||||
*/
|
*/
|
||||||
int getLlave();
|
int getLlave();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el valor de la llave.
|
* Cambiar el valor de la llave.
|
||||||
*
|
*
|
||||||
* @param llave int: El valor de la llave.
|
* @param llave int: El valor de la llave.
|
||||||
*/
|
*/
|
||||||
void setLlave(int llave);
|
void setLlave(int llave);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el siguente enlace.
|
* Devolver el siguente enlace.
|
||||||
*
|
*
|
||||||
* @return Object: El enlace a devolver.
|
* @return Object: El enlace a devolver.
|
||||||
*/
|
*/
|
||||||
Object getSiguiente();
|
Object getSiguiente();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el siguiente enlace.
|
* Cambiar el siguiente enlace.
|
||||||
*
|
*
|
||||||
* @param siguiente Object: El siguiente enlace nuevo.
|
* @param siguiente Object: El siguiente enlace nuevo.
|
||||||
*/
|
*/
|
||||||
void setSiguiente(Object siguiente);
|
void setSiguiente(Object siguiente);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el enlace previo.
|
* Devolver el enlace previo.
|
||||||
*
|
*
|
||||||
* @return Object: El enlace previo.
|
* @return Object: El enlace previo.
|
||||||
*/
|
*/
|
||||||
Object getPrevio();
|
Object getPrevio();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el previo enlace.
|
* Cambiar el previo enlace.
|
||||||
*
|
*
|
||||||
* @param previo Object: El enlace previo nuevo.
|
* @param previo Object: El enlace previo nuevo.
|
||||||
*/
|
*/
|
||||||
void setPrevio(Object previo);
|
void setPrevio(Object previo);
|
||||||
}
|
}
|
@ -6,73 +6,73 @@ package cl.cromer.estructuras;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final public class EnlaceCircular implements Enlace {
|
final public class EnlaceCircular implements Enlace {
|
||||||
/**
|
/**
|
||||||
* La llave.
|
* La llave.
|
||||||
*/
|
*/
|
||||||
private int llave;
|
private int llave;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El siguiente enlace.
|
* El siguiente enlace.
|
||||||
*/
|
*/
|
||||||
private EnlaceCircular siguiente;
|
private EnlaceCircular siguiente;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Incializar.
|
* Incializar.
|
||||||
*/
|
*/
|
||||||
public EnlaceCircular() {
|
public EnlaceCircular() {
|
||||||
siguiente = null;
|
siguiente = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la llave.
|
* Devolver la llave.
|
||||||
*
|
*
|
||||||
* @return int: La llave.
|
* @return int: La llave.
|
||||||
*/
|
*/
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el valor de la llave.
|
* Cambiar el valor de la llave.
|
||||||
*
|
*
|
||||||
* @param llave int: El valor de la llave.
|
* @param llave int: El valor de la llave.
|
||||||
*/
|
*/
|
||||||
public void setLlave(int llave) {
|
public void setLlave(int llave) {
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el siguiente enlace.
|
* Devolver el siguiente enlace.
|
||||||
*
|
*
|
||||||
* @return EnlaceCircular: El enlace a devolver.
|
* @return EnlaceCircular: El enlace a devolver.
|
||||||
*/
|
*/
|
||||||
public EnlaceCircular getSiguiente() {
|
public EnlaceCircular getSiguiente() {
|
||||||
return siguiente;
|
return siguiente;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el siguiente enlace.
|
* Cambiar el siguiente enlace.
|
||||||
*
|
*
|
||||||
* @param siguiente Object: El siguiente enlace nuevo de tipo {@link EnlaceCircular}.
|
* @param siguiente Object: El siguiente enlace nuevo de tipo {@link EnlaceCircular}.
|
||||||
*/
|
*/
|
||||||
public void setSiguiente(Object siguiente) {
|
public void setSiguiente(Object siguiente) {
|
||||||
this.siguiente = (EnlaceCircular) siguiente;
|
this.siguiente = (EnlaceCircular) siguiente;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el enlace previo.
|
* Devolver el enlace previo.
|
||||||
*
|
*
|
||||||
* @return EnlaceCircular: El enlace previo.
|
* @return EnlaceCircular: El enlace previo.
|
||||||
*/
|
*/
|
||||||
public EnlaceCircular getPrevio() {
|
public EnlaceCircular getPrevio() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dummy metodo para usar interface {@link Enlace}
|
* Dummy metodo para usar interface {@link Enlace}
|
||||||
*
|
*
|
||||||
* @param previo Object: El enlace previo nuevo de tipo {@link EnlaceCircular}.
|
* @param previo Object: El enlace previo nuevo de tipo {@link EnlaceCircular}.
|
||||||
*/
|
*/
|
||||||
public void setPrevio(Object previo) {
|
public void setPrevio(Object previo) {
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,80 +6,80 @@ package cl.cromer.estructuras;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final public class EnlaceNormal implements Enlace {
|
final public class EnlaceNormal implements Enlace {
|
||||||
/**
|
/**
|
||||||
* La llave.
|
* La llave.
|
||||||
*/
|
*/
|
||||||
private int llave;
|
private int llave;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El siguiente enlace.
|
* El siguiente enlace.
|
||||||
*/
|
*/
|
||||||
private EnlaceNormal siguiente;
|
private EnlaceNormal siguiente;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El enlace previo por doble enlazada.
|
* El enlace previo por doble enlazada.
|
||||||
*/
|
*/
|
||||||
private EnlaceNormal previo;
|
private EnlaceNormal previo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Incializar.
|
* Incializar.
|
||||||
*/
|
*/
|
||||||
public EnlaceNormal() {
|
public EnlaceNormal() {
|
||||||
siguiente = null;
|
siguiente = null;
|
||||||
previo = null;
|
previo = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la llave.
|
* Devolver la llave.
|
||||||
*
|
*
|
||||||
* @return int: La llave.
|
* @return int: La llave.
|
||||||
*/
|
*/
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el valor de la llave.
|
* Cambiar el valor de la llave.
|
||||||
*
|
*
|
||||||
* @param llave int: El valor de la llave.
|
* @param llave int: El valor de la llave.
|
||||||
*/
|
*/
|
||||||
public void setLlave(int llave) {
|
public void setLlave(int llave) {
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el siguiente enlace.
|
* Devolver el siguiente enlace.
|
||||||
*
|
*
|
||||||
* @return EnlaceNormal: El enlace a devolver.
|
* @return EnlaceNormal: El enlace a devolver.
|
||||||
*/
|
*/
|
||||||
public EnlaceNormal getSiguiente() {
|
public EnlaceNormal getSiguiente() {
|
||||||
return siguiente;
|
return siguiente;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el siguiente enlace.
|
* Cambiar el siguiente enlace.
|
||||||
*
|
*
|
||||||
* @param siguiente Object: El siguiente enlace nuevo de tipo {@link EnlaceNormal}.
|
* @param siguiente Object: El siguiente enlace nuevo de tipo {@link EnlaceNormal}.
|
||||||
*/
|
*/
|
||||||
public void setSiguiente(Object siguiente) {
|
public void setSiguiente(Object siguiente) {
|
||||||
this.siguiente = (EnlaceNormal) siguiente;
|
this.siguiente = (EnlaceNormal) siguiente;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el enlace previo.
|
* Devolver el enlace previo.
|
||||||
*
|
*
|
||||||
* @return EnlaceNormal: El enlace previo.
|
* @return EnlaceNormal: El enlace previo.
|
||||||
*/
|
*/
|
||||||
public EnlaceNormal getPrevio() {
|
public EnlaceNormal getPrevio() {
|
||||||
return previo;
|
return previo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el previo enlace.
|
* Cambiar el previo enlace.
|
||||||
*
|
*
|
||||||
* @param previo Object: El enlace previo nuevo de tipo {@link EnlaceNormal}.
|
* @param previo Object: El enlace previo nuevo de tipo {@link EnlaceNormal}.
|
||||||
*/
|
*/
|
||||||
public void setPrevio(Object previo) {
|
public void setPrevio(Object previo) {
|
||||||
this.previo = (EnlaceNormal) previo;
|
this.previo = (EnlaceNormal) previo;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -27,9 +27,9 @@ public class HashTable {
|
|||||||
* @param tamano int: El tamaño maximo de la tabla hash.
|
* @param tamano int: El tamaño maximo de la tabla hash.
|
||||||
*/
|
*/
|
||||||
public HashTable(int tamano) {
|
public HashTable(int tamano) {
|
||||||
this.tamano = tamano;
|
this.tamano = tamano;
|
||||||
hashArray = new HashItem[tamano];
|
hashArray = new HashItem[tamano];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la cantidad de elementos que están en la tabla.
|
* Devolver la cantidad de elementos que están en la tabla.
|
||||||
@ -37,38 +37,38 @@ public class HashTable {
|
|||||||
* @return int: La cantidad.
|
* @return int: La cantidad.
|
||||||
*/
|
*/
|
||||||
public int size() {
|
public int size() {
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Este metodo crea un hash muy único.
|
* Este metodo crea un hash muy único.
|
||||||
*
|
*
|
||||||
* @param string String: El string a hashear.
|
* @param string String: El string a hashear.
|
||||||
*
|
*
|
||||||
* @return int: El hash a devolver.
|
* @return int: El hash a devolver.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public int hashMejor(String string) {
|
public int hashMejor(String string) {
|
||||||
int intLength = string.length() / 4;
|
int intLength = string.length() / 4;
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
for (int j = 0; j < intLength; j++) {
|
for (int j = 0; j < intLength; j++) {
|
||||||
char c[] = string.substring(j * 4, (j * 4) + 4).toCharArray();
|
char c[] = string.substring(j * 4, (j * 4) + 4).toCharArray();
|
||||||
int mult = 1;
|
int mult = 1;
|
||||||
for (char aC : c) {
|
for (char aC : c) {
|
||||||
sum = sum + aC * mult;
|
sum = sum + aC * mult;
|
||||||
mult = mult * 256;
|
mult = mult * 256;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char c[] = string.substring(intLength * 4).toCharArray();
|
char c[] = string.substring(intLength * 4).toCharArray();
|
||||||
int mult = 1;
|
int mult = 1;
|
||||||
for (char aC : c) {
|
for (char aC : c) {
|
||||||
sum = sum + aC * mult;
|
sum = sum + aC * mult;
|
||||||
mult = mult * 256;
|
mult = mult * 256;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (Math.abs(sum) % tamano);
|
return (Math.abs(sum) % tamano);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Insertar una llave y valor en la tabla hash.
|
* Insertar una llave y valor en la tabla hash.
|
||||||
@ -79,45 +79,45 @@ public class HashTable {
|
|||||||
* @return boolean: Verdad si fue insertado, sino está llena la tabla hash.
|
* @return boolean: Verdad si fue insertado, sino está llena la tabla hash.
|
||||||
*/
|
*/
|
||||||
public boolean insertar(String llave, int valor) {
|
public boolean insertar(String llave, int valor) {
|
||||||
HashItem hashItem = new HashItem(llave, valor);
|
HashItem hashItem = new HashItem(llave, valor);
|
||||||
int hashIndice = hash(hashItem.getLlave());
|
int hashIndice = hash(hashItem.getLlave());
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (hashArray[hashIndice] != null && hashArray[hashIndice].getLlave() != null && i < tamano) {
|
while (hashArray[hashIndice] != null && hashArray[hashIndice].getLlave() != null && i < tamano) {
|
||||||
if (hashArray[hashIndice].getLlave().equals(llave)) {
|
if (hashArray[hashIndice].getLlave().equals(llave)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
hashIndice++;
|
hashIndice++;
|
||||||
hashIndice = hashIndice % tamano;
|
hashIndice = hashIndice % tamano;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (i == 10) {
|
if (i == 10) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
hashItem.setIndice(hashIndice);
|
hashItem.setIndice(hashIndice);
|
||||||
hashArray[hashIndice] = hashItem;
|
hashArray[hashIndice] = hashItem;
|
||||||
size++;
|
size++;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Este metodo crea un hash usando una llave.
|
* Este metodo crea un hash usando una llave.
|
||||||
*
|
*
|
||||||
* @param string String: El string a hashear.
|
* @param string String: El string a hashear.
|
||||||
*
|
*
|
||||||
* @return int: El hash a devolver.
|
* @return int: El hash a devolver.
|
||||||
*/
|
*/
|
||||||
public int hash(String string) {
|
public int hash(String string) {
|
||||||
int hash = 31;
|
int hash = 31;
|
||||||
for (int i = 0; i < string.length(); i++) {
|
for (int i = 0; i < string.length(); i++) {
|
||||||
hash = hash * 31 + string.charAt(i);
|
hash = hash * 31 + string.charAt(i);
|
||||||
}
|
}
|
||||||
if (hash < 0) {
|
if (hash < 0) {
|
||||||
hash = hash * - 1;
|
hash = hash * - 1;
|
||||||
}
|
}
|
||||||
return hash % tamano;
|
return hash % tamano;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Eliminar un elemento de la tabla hash.
|
* Eliminar un elemento de la tabla hash.
|
||||||
@ -127,21 +127,21 @@ public class HashTable {
|
|||||||
* @return boolean: Verdad si fue borrado, sino no existiá.
|
* @return boolean: Verdad si fue borrado, sino no existiá.
|
||||||
*/
|
*/
|
||||||
public boolean eliminar(String llave) {
|
public boolean eliminar(String llave) {
|
||||||
HashItem hashItem = new HashItem(llave, 0);
|
HashItem hashItem = new HashItem(llave, 0);
|
||||||
int hashIndice = hash(hashItem.getLlave());
|
int hashIndice = hash(hashItem.getLlave());
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (hashArray[hashIndice] != null && hashArray[hashIndice].getLlave() != null && i < tamano) {
|
while (hashArray[hashIndice] != null && hashArray[hashIndice].getLlave() != null && i < tamano) {
|
||||||
if (hashArray[hashIndice].getLlave().equals(llave)) {
|
if (hashArray[hashIndice].getLlave().equals(llave)) {
|
||||||
hashArray[hashIndice] = null;
|
hashArray[hashIndice] = null;
|
||||||
size--;
|
size--;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
hashIndice++;
|
hashIndice++;
|
||||||
hashIndice = hashIndice % tamano;
|
hashIndice = hashIndice % tamano;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Buscar una llave en la tabla hash.
|
* Buscar una llave en la tabla hash.
|
||||||
@ -151,27 +151,27 @@ public class HashTable {
|
|||||||
* @return HashItem: Devolver el elemento que contine la llave.
|
* @return HashItem: Devolver el elemento que contine la llave.
|
||||||
*/
|
*/
|
||||||
public HashItem buscar(String llave) {
|
public HashItem buscar(String llave) {
|
||||||
for (int i = 0; i < tamano; i++) {
|
for (int i = 0; i < tamano; i++) {
|
||||||
if (hashArray[i] != null && hashArray[i].getLlave().equals(llave)) {
|
if (hashArray[i] != null && hashArray[i].getLlave().equals(llave)) {
|
||||||
return hashArray[i];
|
return hashArray[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el valor que está guardado en cada indice. Se usa para construir la grafica.
|
* Devolver el valor que está guardado en cada indice. Se usa para construir la grafica.
|
||||||
*
|
*
|
||||||
* @param indice int: El indice que desea ver.
|
* @param indice int: El indice que desea ver.
|
||||||
*
|
*
|
||||||
* @return String: El valor que está en dicho indice.
|
* @return String: El valor que está en dicho indice.
|
||||||
*/
|
*/
|
||||||
public HashItem getIndice(int indice) {
|
public HashItem getIndice(int indice) {
|
||||||
if (indice >= 0 && indice < hashArray.length) {
|
if (indice >= 0 && indice < hashArray.length) {
|
||||||
return hashArray[indice];
|
return hashArray[indice];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ public class HashTableController implements Initializable {
|
|||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -98,7 +98,7 @@ public class HashTableController implements Initializable {
|
|||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
int numero = random.nextInt(rango) + minimo;
|
int numero = random.nextInt(rango) + minimo;
|
||||||
while (!hashTable.insertar(palabras.getPalabra(), numero)) {
|
while (! hashTable.insertar(palabras.getPalabra(), numero)) {
|
||||||
if (hashTable.size() == 10) {
|
if (hashTable.size() == 10) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -107,6 +107,40 @@ public class HashTableController implements Initializable {
|
|||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Crear el hashTable de tamaño 10.
|
||||||
|
*/
|
||||||
|
private void initializeHashTable() {
|
||||||
|
scene = contenidoHashTable.getScene();
|
||||||
|
grafico = new Grafico(scene);
|
||||||
|
this.hashTable = new HashTable(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Poner los valores en el grafico.
|
||||||
|
*/
|
||||||
|
private void generarGrafico() {
|
||||||
|
grafico.removerDestacar();
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
if (hashTable.getIndice(i) != null) {
|
||||||
|
Text text = (Text) scene.lookup("#indice_texto_" + String.valueOf(i));
|
||||||
|
text.setText(String.valueOf(i));
|
||||||
|
text = (Text) scene.lookup("#llave_texto_" + String.valueOf(i));
|
||||||
|
text.setText(hashTable.getIndice(i).getLlave());
|
||||||
|
text = (Text) scene.lookup("#valor_texto_" + String.valueOf(i));
|
||||||
|
text.setText(String.valueOf(hashTable.getIndice(i).getValor()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Text text = (Text) scene.lookup("#indice_texto_" + String.valueOf(i));
|
||||||
|
text.setText("");
|
||||||
|
text = (Text) scene.lookup("#llave_texto_" + String.valueOf(i));
|
||||||
|
text.setText("");
|
||||||
|
text = (Text) scene.lookup("#valor_texto_" + String.valueOf(i));
|
||||||
|
text.setText("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vaciar el hashTable de todos los valores.
|
* Vaciar el hashTable de todos los valores.
|
||||||
*/
|
*/
|
||||||
@ -131,10 +165,10 @@ public class HashTableController implements Initializable {
|
|||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
/*String tipo = (hashTable.isOrdered()) ? "Ordenado" : "Simple";
|
/*String tipo = (hashTable.isOrdered()) ? "Ordenado" : "Simple";
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/hashTable" + tipo + "/insertar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/hashTable" + tipo + "/insertar")).useDelimiter("\\Z").next();
|
||||||
codigoHashTable.setText(codigoTexto);*/
|
codigoHashTable.setText(codigoTexto);*/
|
||||||
|
|
||||||
if (llaveHashTable.getText() != null && !llaveHashTable.getText().trim().equals("") && valorHashTable.getText() != null && !valorHashTable.getText().trim().equals("")) {
|
if (llaveHashTable.getText() != null && ! llaveHashTable.getText().trim().equals("") && valorHashTable.getText() != null && ! valorHashTable.getText().trim().equals("")) {
|
||||||
try {
|
try {
|
||||||
boolean exito = hashTable.insertar(llaveHashTable.getText().trim(), Integer.valueOf(valorHashTable.getText()));
|
boolean exito = hashTable.insertar(llaveHashTable.getText().trim(), Integer.valueOf(valorHashTable.getText()));
|
||||||
if (exito) {
|
if (exito) {
|
||||||
@ -173,11 +207,11 @@ public class HashTableController implements Initializable {
|
|||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
/*String tipo = (hashTable.isOrdered()) ? "Ordenado" : "Simple";
|
/*String tipo = (hashTable.isOrdered()) ? "Ordenado" : "Simple";
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/hashTable" + tipo + "/eliminar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/hashTable" + tipo + "/eliminar")).useDelimiter("\\Z").next();
|
||||||
codigoHashTable.setText(codigoTexto);*/
|
codigoHashTable.setText(codigoTexto);*/
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (llaveHashTable.getText() != null && !llaveHashTable.getText().trim().equals("")) {
|
if (llaveHashTable.getText() != null && ! llaveHashTable.getText().trim().equals("")) {
|
||||||
boolean exito = hashTable.eliminar(llaveHashTable.getText());
|
boolean exito = hashTable.eliminar(llaveHashTable.getText());
|
||||||
if (exito) {
|
if (exito) {
|
||||||
llaveHashTable.setText("");
|
llaveHashTable.setText("");
|
||||||
@ -211,11 +245,11 @@ public class HashTableController implements Initializable {
|
|||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
/*String tipo = (hashTable.isOrdered()) ? "Ordenado" : "Simple";
|
/*String tipo = (hashTable.isOrdered()) ? "Ordenado" : "Simple";
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/hashTable" + tipo + "/buscar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/hashTable" + tipo + "/buscar")).useDelimiter("\\Z").next();
|
||||||
codigoHashTable.setText(codigoTexto);*/
|
codigoHashTable.setText(codigoTexto);*/
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (llaveHashTable.getText() != null && !llaveHashTable.getText().trim().equals("")) {
|
if (llaveHashTable.getText() != null && ! llaveHashTable.getText().trim().equals("")) {
|
||||||
HashItem hashItem = hashTable.buscar(llaveHashTable.getText());
|
HashItem hashItem = hashTable.buscar(llaveHashTable.getText());
|
||||||
if (hashItem != null) {
|
if (hashItem != null) {
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
@ -240,39 +274,5 @@ public class HashTableController implements Initializable {
|
|||||||
Logs.log(Level.WARNING, "No es tipo int.");
|
Logs.log(Level.WARNING, "No es tipo int.");
|
||||||
Main.mostrarError(resourceBundle.getString("tablaHashNoLlave"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("tablaHashNoLlave"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Crear el hashTable de tamaño 10.
|
|
||||||
*/
|
|
||||||
private void initializeHashTable() {
|
|
||||||
scene = contenidoHashTable.getScene();
|
|
||||||
grafico = new Grafico(scene);
|
|
||||||
this.hashTable = new HashTable(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Poner los valores en el grafico.
|
|
||||||
*/
|
|
||||||
private void generarGrafico() {
|
|
||||||
grafico.removerDestacar();
|
|
||||||
for (int i = 0; i < 10; i++) {
|
|
||||||
if (hashTable.getIndice(i) != null) {
|
|
||||||
Text text = (Text) scene.lookup("#indice_texto_" + String.valueOf(i));
|
|
||||||
text.setText(String.valueOf(i));
|
|
||||||
text = (Text) scene.lookup("#llave_texto_" + String.valueOf(i));
|
|
||||||
text.setText(hashTable.getIndice(i).getLlave());
|
|
||||||
text = (Text) scene.lookup("#valor_texto_" + String.valueOf(i));
|
|
||||||
text.setText(String.valueOf(hashTable.getIndice(i).getValor()));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Text text = (Text) scene.lookup("#indice_texto_" + String.valueOf(i));
|
|
||||||
text.setText("");
|
|
||||||
text = (Text) scene.lookup("#llave_texto_" + String.valueOf(i));
|
|
||||||
text.setText("");
|
|
||||||
text = (Text) scene.lookup("#valor_texto_" + String.valueOf(i));
|
|
||||||
text.setText("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ public class InsercionController implements Initializable {
|
|||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -112,7 +112,7 @@ public class InsercionController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/insercion/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/insercion/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoInsercion.setText(codigoTexto);
|
codigoInsercion.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.insercion(true)) {
|
if (! array.insercion(true)) {
|
||||||
Main.mostrarError(resourceBundle.getString("insercionYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("insercionYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,10 +132,10 @@ public class InsercionController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/insercion/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/insercion/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoInsercion.setText(codigoTexto);
|
codigoInsercion.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.insercion(false)) {
|
if (! array.insercion(false)) {
|
||||||
Main.mostrarError(resourceBundle.getString("insercionYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("insercionYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,172 +6,176 @@ package cl.cromer.estructuras;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final public class ListaEnlazada {
|
final public class ListaEnlazada {
|
||||||
/**
|
/**
|
||||||
* El enlace principal de la lista.
|
* El enlace principal de la lista.
|
||||||
*/
|
*/
|
||||||
private Enlace lista;
|
private Enlace lista;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La cantidad de enlaces que están en la lista.
|
* La cantidad de enlaces que están en la lista.
|
||||||
*/
|
*/
|
||||||
private int size;
|
private int size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El tipo de lista enlazada.
|
* El tipo de lista enlazada.
|
||||||
*/
|
*/
|
||||||
private int tipo;
|
private int tipo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicilizar.
|
* Inicilizar.
|
||||||
*/
|
*/
|
||||||
public ListaEnlazada() {
|
public ListaEnlazada() {
|
||||||
lista = null;
|
lista = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la cantidad de enlaces que están en la lista.
|
* Devolver el tipo de lista.
|
||||||
*
|
*
|
||||||
* @return int: La cantidad.
|
* @return int: El tipo.
|
||||||
*/
|
*/
|
||||||
public int size() {
|
public int getTipo() {
|
||||||
return size;
|
return tipo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el tipo de lista.
|
* Cambiar el tipo de lista.
|
||||||
*
|
*
|
||||||
* @return int: El tipo.
|
* @param tipo int: El tipo a cambiar.
|
||||||
*/
|
*/
|
||||||
public int getTipo() {
|
public void setTipo(int tipo) {
|
||||||
return tipo;
|
this.tipo = tipo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el tipo de lista.
|
* Insertar una llave en la lista.
|
||||||
*
|
*
|
||||||
* @param tipo int: El tipo a cambiar.
|
* @param llave int: La llave a insertar.
|
||||||
*/
|
*
|
||||||
public void setTipo(int tipo) {
|
* @return boolean: Verdad si fue insertado, sino falso.
|
||||||
this.tipo = tipo;
|
*/
|
||||||
}
|
public boolean insertar(int llave) {
|
||||||
|
if (buscar(llave) == null) {
|
||||||
|
// Crear una enlace y agregarla a la lista
|
||||||
|
Enlace nuevo = new EnlaceNormal();
|
||||||
|
nuevo.setLlave(llave);
|
||||||
|
nuevo.setSiguiente(lista);
|
||||||
|
if (lista != null) {
|
||||||
|
lista.setPrevio(nuevo);
|
||||||
|
}
|
||||||
|
lista = nuevo;
|
||||||
|
size++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Se falló porque la llave ya existe
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Buscar una llave en la lista.
|
* Buscar una llave en la lista.
|
||||||
*
|
*
|
||||||
* @param llave int: La llave a buscar.
|
* @param llave int: La llave a buscar.
|
||||||
* @return Enlace: El enlace que contiene la llave buscada.
|
*
|
||||||
*/
|
* @return Enlace: El enlace que contiene la llave buscada.
|
||||||
public Enlace buscar(int llave) {
|
*/
|
||||||
if (this.lista != null) {
|
public Enlace buscar(int llave) {
|
||||||
// La lista no es vacia
|
if (this.lista != null) {
|
||||||
Enlace lista = this.lista;
|
// La lista no es vacia
|
||||||
while (lista.getLlave() != llave) {
|
Enlace lista = this.lista;
|
||||||
// Buscar hasta la llave es encontrado
|
while (lista.getLlave() != llave) {
|
||||||
if (lista.getSiguiente() != null) {
|
// Buscar hasta la llave es encontrado
|
||||||
// Buscar en la siguiente enlace
|
if (lista.getSiguiente() != null) {
|
||||||
lista = (Enlace) lista.getSiguiente();
|
// Buscar en la siguiente enlace
|
||||||
}
|
lista = (Enlace) lista.getSiguiente();
|
||||||
else {
|
}
|
||||||
// No se encuentra
|
else {
|
||||||
return null;
|
// No se encuentra
|
||||||
}
|
return null;
|
||||||
}
|
}
|
||||||
// Se encontró
|
}
|
||||||
return lista;
|
// Se encontró
|
||||||
}
|
return lista;
|
||||||
else {
|
}
|
||||||
// La lista es vacia, nada para buscar
|
else {
|
||||||
return null;
|
// La lista es vacia, nada para buscar
|
||||||
}
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Insertar una llave en la lista.
|
* Eliminar un enlace de la lista.
|
||||||
*
|
*
|
||||||
* @param llave int: La llave a insertar.
|
* @param llave int: La llave a eliminar.
|
||||||
* @return boolean: Verdad si fue insertado, sino falso.
|
*
|
||||||
*/
|
* @return boolean: Verdad si fue borrado, sino falso.
|
||||||
public boolean insertar(int llave) {
|
*/
|
||||||
if (buscar(llave) == null) {
|
public boolean eliminar(int llave) {
|
||||||
// Crear una enlace y agregarla a la lista
|
if (lista != null) {
|
||||||
Enlace nuevo = new EnlaceNormal();
|
// La lista no es vacia
|
||||||
nuevo.setLlave(llave);
|
Enlace lista = this.lista;
|
||||||
nuevo.setSiguiente(lista);
|
Enlace previo = lista;
|
||||||
if (lista != null) {
|
while (lista.getLlave() != llave) {
|
||||||
lista.setPrevio(nuevo);
|
// Buscar hasta la llave es encontraddo
|
||||||
}
|
if (lista.getSiguiente() != null) {
|
||||||
lista = nuevo;
|
// Buscar en la siguiente enlace
|
||||||
size++;
|
previo = lista;
|
||||||
return true;
|
lista = (Enlace) lista.getSiguiente();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Se falló porque la llave ya existe
|
// No se encuentra
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Se encontró
|
||||||
|
if (lista == this.lista) {
|
||||||
|
// Si es la primera enlace, cambiarla al siguiente enlace
|
||||||
|
this.lista = (Enlace) this.lista.getSiguiente();
|
||||||
|
if (this.lista.getPrevio() != null) {
|
||||||
|
this.lista.setPrevio(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Sino cortar esta enlace de la lista
|
||||||
|
previo.setSiguiente(lista.getSiguiente());
|
||||||
|
}
|
||||||
|
size--;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// La lista es vacia, no hay nada para eliminar
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Eliminar un enlace de la lista.
|
* Devolver un enlace con su llave y valor.
|
||||||
*
|
*
|
||||||
* @param llave int: La llave a eliminar.
|
* @param indice int: El indice que desea ver.
|
||||||
* @return boolean: Verdad si fue borrado, sino falso.
|
*
|
||||||
*/
|
* @return Enlace: El enlace a devolver.
|
||||||
public boolean eliminar(int llave) {
|
*/
|
||||||
if (lista != null) {
|
public Enlace getIndice(int indice) {
|
||||||
// La lista no es vacia
|
if (lista != null && indice >= 0 && indice < size()) {
|
||||||
Enlace lista = this.lista;
|
int i = size();
|
||||||
Enlace previo = lista;
|
Enlace lista = this.lista;
|
||||||
while (lista.getLlave() != llave) {
|
while (i > indice + 1) {
|
||||||
// Buscar hasta la llave es encontraddo
|
lista = (Enlace) lista.getSiguiente();
|
||||||
if (lista.getSiguiente() != null) {
|
i--;
|
||||||
// Buscar en la siguiente enlace
|
}
|
||||||
previo = lista;
|
return lista;
|
||||||
lista = (Enlace) lista.getSiguiente();
|
}
|
||||||
}
|
else {
|
||||||
else {
|
return null;
|
||||||
// No se encuentra
|
}
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
// Se encontró
|
|
||||||
if (lista == this.lista) {
|
|
||||||
// Si es la primera enlace, cambiarla al siguiente enlace
|
|
||||||
this.lista = (Enlace) this.lista.getSiguiente();
|
|
||||||
if (this.lista.getPrevio() != null) {
|
|
||||||
this.lista.setPrevio(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Sino cortar esta enlace de la lista
|
|
||||||
previo.setSiguiente(lista.getSiguiente());
|
|
||||||
}
|
|
||||||
size--;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// La lista es vacia, no hay nada para eliminar
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver un enlace con su llave y valor.
|
* Devolver la cantidad de enlaces que están en la lista.
|
||||||
*
|
*
|
||||||
* @param indice int: El indice que desea ver.
|
* @return int: La cantidad.
|
||||||
* @return Enlace: El enlace a devolver.
|
*/
|
||||||
*/
|
public int size() {
|
||||||
public Enlace getIndice(int indice) {
|
return size;
|
||||||
if (lista != null && indice >= 0 && indice < size()) {
|
}
|
||||||
int i = size();
|
|
||||||
Enlace lista = this.lista;
|
|
||||||
while (i > indice + 1) {
|
|
||||||
lista = (Enlace) lista.getSiguiente();
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
return lista;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -6,183 +6,188 @@ package cl.cromer.estructuras;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final public class ListaEnlazadaCircular {
|
final public class ListaEnlazadaCircular {
|
||||||
/**
|
/**
|
||||||
* El primer enlace.
|
* El primer enlace.
|
||||||
*/
|
*/
|
||||||
private Enlace primer;
|
private Enlace primer;
|
||||||
/**
|
|
||||||
* El ultimo enlace.
|
|
||||||
*/
|
|
||||||
private Enlace ultimo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La cantidad de enlaces que hay.
|
* El ultimo enlace.
|
||||||
*/
|
*/
|
||||||
private int size;
|
private Enlace ultimo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El tipo de lista enlazada.
|
* La cantidad de enlaces que hay.
|
||||||
*/
|
*/
|
||||||
private int tipo;
|
private int size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicilizar.
|
* El tipo de lista enlazada.
|
||||||
*/
|
*/
|
||||||
public ListaEnlazadaCircular() {
|
private int tipo;
|
||||||
primer = null;
|
|
||||||
ultimo = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la cantidad de enlaces que están en la lista.
|
* Inicilizar.
|
||||||
*
|
*/
|
||||||
* @return int: La cantidad.
|
public ListaEnlazadaCircular() {
|
||||||
*/
|
primer = null;
|
||||||
public int size() {
|
ultimo = null;
|
||||||
return size;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el tipo de lista.
|
* Devolver el tipo de lista.
|
||||||
*
|
*
|
||||||
* @return int: El tipo de lista.
|
* @return int: El tipo de lista.
|
||||||
*/
|
*/
|
||||||
public int getTipo() {
|
public int getTipo() {
|
||||||
return tipo;
|
return tipo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el tipo de lista.
|
* Cambiar el tipo de lista.
|
||||||
*
|
*
|
||||||
* @param tipo int: El tipo a cambiar.
|
* @param tipo int: El tipo a cambiar.
|
||||||
*/
|
*/
|
||||||
public void setTipo(int tipo) {
|
public void setTipo(int tipo) {
|
||||||
this.tipo = tipo;
|
this.tipo = tipo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Buscar una llave en la lista.
|
* Insertar una llave en la lista.
|
||||||
*
|
*
|
||||||
* @param llave int: La llave a buscar.
|
* @param llave int: La llave a insertar.
|
||||||
* @return Enlace: El enlace que contiene la llave.
|
*
|
||||||
*/
|
* @return boolean: Verdad si fue insertado, falso si ya existe la llave.
|
||||||
public Enlace buscar(int llave) {
|
*/
|
||||||
if (this.primer != null) {
|
public boolean insertar(int llave) {
|
||||||
// La lista no es vacia
|
if (buscar(llave) == null) {
|
||||||
Enlace lista = this.primer;
|
// Crear una enlace y agregarla a la lista
|
||||||
int i = 0;
|
Enlace enlace = new EnlaceCircular();
|
||||||
while (lista.getLlave() != llave && i < size()) {
|
|
||||||
// Buscar en la sigenute enlace hasta el final.
|
|
||||||
lista = (Enlace) lista.getSiguiente();
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
if (lista.getLlave() == llave) {
|
|
||||||
// Devoler el enlace encontrado.
|
|
||||||
return lista;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// No se encontró.
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// La lista es vacia, nada para buscar
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
if (primer == null) {
|
||||||
* Insertar una llave en la lista.
|
ultimo = enlace;
|
||||||
*
|
}
|
||||||
* @param llave int: La llave a insertar.
|
|
||||||
* @return boolean: Verdad si fue insertado, falso si ya existe la llave.
|
|
||||||
*/
|
|
||||||
public boolean insertar(int llave) {
|
|
||||||
if (buscar(llave) == null) {
|
|
||||||
// Crear una enlace y agregarla a la lista
|
|
||||||
Enlace enlace = new EnlaceCircular();
|
|
||||||
|
|
||||||
if (primer == null) {
|
enlace.setLlave(llave);
|
||||||
ultimo = enlace;
|
enlace.setSiguiente(primer);
|
||||||
}
|
primer = enlace;
|
||||||
|
ultimo.setSiguiente(primer);
|
||||||
|
|
||||||
enlace.setLlave(llave);
|
size++;
|
||||||
enlace.setSiguiente(primer);
|
return true;
|
||||||
primer = enlace;
|
}
|
||||||
ultimo.setSiguiente(primer);
|
else {
|
||||||
|
// Se falló porque la llave ya existe
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
size++;
|
/**
|
||||||
return true;
|
* Buscar una llave en la lista.
|
||||||
}
|
*
|
||||||
else {
|
* @param llave int: La llave a buscar.
|
||||||
// Se falló porque la llave ya existe
|
*
|
||||||
return false;
|
* @return Enlace: El enlace que contiene la llave.
|
||||||
}
|
*/
|
||||||
}
|
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 < size()) {
|
||||||
|
// Buscar en la sigenute enlace hasta el final.
|
||||||
|
lista = (Enlace) lista.getSiguiente();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (lista.getLlave() == llave) {
|
||||||
|
// Devoler el enlace encontrado.
|
||||||
|
return lista;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// No se encontró.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// La lista es vacia, nada para buscar
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Eliminar un enlace de la lista.
|
* Devolver la cantidad de enlaces que están en la lista.
|
||||||
*
|
*
|
||||||
* @param llave int: La llave a elminiar.
|
* @return int: La cantidad.
|
||||||
* @return boolean: Verdad se fue eliminado, falso si no estaba en la lista.
|
*/
|
||||||
*/
|
public int size() {
|
||||||
public boolean eliminar(int llave) {
|
return size;
|
||||||
if (primer != null) {
|
}
|
||||||
// La lista no es vacia
|
|
||||||
Enlace lista = this.primer;
|
|
||||||
Enlace previo = lista;
|
|
||||||
int i = 0;
|
|
||||||
while (lista.getLlave() != llave && i < size()) {
|
|
||||||
// Buscar hasta la llave es encontraddo
|
|
||||||
if (lista.getSiguiente() != null) {
|
|
||||||
// Buscar en la siguiente enlace
|
|
||||||
previo = lista;
|
|
||||||
lista = (Enlace) lista.getSiguiente();
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lista.getLlave() != llave) {
|
/**
|
||||||
// No se encontró
|
* Eliminar un enlace de la lista.
|
||||||
return false;
|
*
|
||||||
}
|
* @param llave int: La llave a elminiar.
|
||||||
|
*
|
||||||
|
* @return boolean: Verdad se fue eliminado, falso si no estaba en la lista.
|
||||||
|
*/
|
||||||
|
public boolean eliminar(int llave) {
|
||||||
|
if (primer != null) {
|
||||||
|
// La lista no es vacia
|
||||||
|
Enlace lista = this.primer;
|
||||||
|
Enlace previo = lista;
|
||||||
|
int i = 0;
|
||||||
|
while (lista.getLlave() != llave && i < size()) {
|
||||||
|
// Buscar hasta la llave es encontraddo
|
||||||
|
if (lista.getSiguiente() != null) {
|
||||||
|
// Buscar en la siguiente enlace
|
||||||
|
previo = lista;
|
||||||
|
lista = (Enlace) lista.getSiguiente();
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
// Se encontró
|
if (lista.getLlave() != llave) {
|
||||||
if (lista == this.primer) {
|
// No se encontró
|
||||||
// Si es la primera enlace, cambiarla al sigueinte enlace
|
return false;
|
||||||
this.primer = (Enlace) this.primer.getSiguiente();
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Sino cortar esta enlace de la lista
|
|
||||||
previo.setSiguiente(lista.getSiguiente());
|
|
||||||
}
|
|
||||||
size--;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// La lista es vacia, no hay nada para eliminar
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
// Se encontró
|
||||||
* Devolver un enlace con su llave y valor.
|
if (lista == this.primer) {
|
||||||
*
|
// Si es la primera enlace, cambiarla al sigueinte enlace
|
||||||
* @param indice int: El indice que desea ver.
|
this.primer = (Enlace) this.primer.getSiguiente();
|
||||||
* @return Enlace: El enlace a devolver.
|
}
|
||||||
*/
|
else {
|
||||||
public Enlace getIndice(int indice) {
|
// Sino cortar esta enlace de la lista
|
||||||
if (primer != null && indice >= 0 && indice < size()) {
|
previo.setSiguiente(lista.getSiguiente());
|
||||||
int i = size();
|
}
|
||||||
Enlace lista = this.primer;
|
size--;
|
||||||
while (i > indice + 1) {
|
return true;
|
||||||
lista = (Enlace) lista.getSiguiente();
|
}
|
||||||
i--;
|
else {
|
||||||
}
|
// La lista es vacia, no hay nada para eliminar
|
||||||
return lista;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
}
|
||||||
return null;
|
|
||||||
}
|
/**
|
||||||
}
|
* Devolver un enlace con su llave y valor.
|
||||||
|
*
|
||||||
|
* @param indice int: El indice que desea ver.
|
||||||
|
*
|
||||||
|
* @return Enlace: El enlace a devolver.
|
||||||
|
*/
|
||||||
|
public Enlace getIndice(int indice) {
|
||||||
|
if (primer != null && indice >= 0 && indice < size()) {
|
||||||
|
int i = size();
|
||||||
|
Enlace lista = this.primer;
|
||||||
|
while (i > indice + 1) {
|
||||||
|
lista = (Enlace) lista.getSiguiente();
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
return lista;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -6,51 +6,53 @@ package cl.cromer.estructuras;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final public class ListaEnlazadaTipos {
|
final public class ListaEnlazadaTipos {
|
||||||
/**
|
/**
|
||||||
* Tipo simple.
|
* Tipo simple.
|
||||||
*/
|
*/
|
||||||
static final public int SIMPLE = 0;
|
static final public int SIMPLE = 0;
|
||||||
/**
|
|
||||||
* Tipo circular.
|
|
||||||
*/
|
|
||||||
static final public int CIRCULAR = 1;
|
|
||||||
/**
|
|
||||||
* Tipo doblemente enlazada.
|
|
||||||
*/
|
|
||||||
static final public int DOBLEMENTE_ENLAZADA = 2;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El tipo elegido.
|
* Tipo circular.
|
||||||
*/
|
*/
|
||||||
final private int tipo;
|
static final public int CIRCULAR = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicilizar el tipo de lista enlazada.
|
* Tipo doblemente enlazada.
|
||||||
*
|
*/
|
||||||
* @param tipo int: El tipo de lista enlazada, {@value #SIMPLE}, {@value #CIRCULAR} o {@value #DOBLEMENTE_ENLAZADA}
|
static final public int DOBLEMENTE_ENLAZADA = 2;
|
||||||
*/
|
|
||||||
public ListaEnlazadaTipos(int tipo) {
|
|
||||||
switch (tipo) {
|
|
||||||
case SIMPLE:
|
|
||||||
this.tipo = SIMPLE;
|
|
||||||
break;
|
|
||||||
case CIRCULAR:
|
|
||||||
this.tipo = CIRCULAR;
|
|
||||||
break;
|
|
||||||
case DOBLEMENTE_ENLAZADA:
|
|
||||||
this.tipo = DOBLEMENTE_ENLAZADA;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
this.tipo = SIMPLE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el tipo de lista enlazada.
|
* El tipo elegido.
|
||||||
*
|
*/
|
||||||
* @return int: El tipo.
|
final private int tipo;
|
||||||
*/
|
|
||||||
public int getTipo() {
|
/**
|
||||||
return tipo;
|
* Inicilizar el tipo de lista enlazada.
|
||||||
}
|
*
|
||||||
|
* @param tipo int: El tipo de lista enlazada, {@value #SIMPLE}, {@value #CIRCULAR} o {@value #DOBLEMENTE_ENLAZADA}
|
||||||
|
*/
|
||||||
|
public ListaEnlazadaTipos(int tipo) {
|
||||||
|
switch (tipo) {
|
||||||
|
case SIMPLE:
|
||||||
|
this.tipo = SIMPLE;
|
||||||
|
break;
|
||||||
|
case CIRCULAR:
|
||||||
|
this.tipo = CIRCULAR;
|
||||||
|
break;
|
||||||
|
case DOBLEMENTE_ENLAZADA:
|
||||||
|
this.tipo = DOBLEMENTE_ENLAZADA;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.tipo = SIMPLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Devolver el tipo de lista enlazada.
|
||||||
|
*
|
||||||
|
* @return int: El tipo.
|
||||||
|
*/
|
||||||
|
public int getTipo() {
|
||||||
|
return tipo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -254,7 +254,7 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/insertar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/insertar")).useDelimiter("\\Z").next();
|
||||||
codigoLista.setText(codigoTexto);
|
codigoLista.setText(codigoTexto);
|
||||||
|
|
||||||
if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) {
|
if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) {
|
||||||
try {
|
try {
|
||||||
boolean exito;
|
boolean exito;
|
||||||
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
|
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
|
||||||
@ -316,7 +316,7 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
codigoLista.setText(codigoTexto);
|
codigoLista.setText(codigoTexto);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) {
|
if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) {
|
||||||
boolean exito;
|
boolean exito;
|
||||||
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
|
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
|
||||||
exito = listaEnlazada.eliminar(Integer.valueOf(valorLista.getText()));
|
exito = listaEnlazada.eliminar(Integer.valueOf(valorLista.getText()));
|
||||||
@ -360,7 +360,7 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
codigoLista.setText(codigoTexto);
|
codigoLista.setText(codigoTexto);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) {
|
if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) {
|
||||||
Enlace enlace;
|
Enlace enlace;
|
||||||
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
|
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
|
||||||
enlace = listaEnlazada.buscar(Integer.valueOf(valorLista.getText()));
|
enlace = listaEnlazada.buscar(Integer.valueOf(valorLista.getText()));
|
||||||
@ -386,6 +386,6 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
// El error no es fatal, sigue
|
// El error no es fatal, sigue
|
||||||
Logs.log(Level.WARNING, "No es tipo int.");
|
Logs.log(Level.WARNING, "No es tipo int.");
|
||||||
Main.mostrarError(resourceBundle.getString("listaNoValor"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("listaNoValor"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,43 +12,43 @@ import java.util.logging.SimpleFormatter;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
public class Logs {
|
public class Logs {
|
||||||
/**
|
/**
|
||||||
* Nombre de archivo para guardar los logs.
|
* Nombre de archivo para guardar los logs.
|
||||||
*/
|
*/
|
||||||
static final public String LOGFILE = "./EDD.log";
|
static final public String LOGFILE = "./EDD.log";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nombre del log.
|
* Nombre del log.
|
||||||
*/
|
*/
|
||||||
static final public String LOGNAME = "EDD";
|
static final public String LOGNAME = "EDD";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un logger usando {@value #LOGNAME}. Guardar los logs en el archivo de {@value #LOGFILE}. Pero solo logear si Main.DEBUG es vardad.
|
* Crear un logger usando {@value #LOGNAME}. Guardar los logs en el archivo de {@value #LOGFILE}. Pero solo logear si Main.DEBUG es vardad.
|
||||||
*/
|
*/
|
||||||
public Logs() {
|
public Logs() {
|
||||||
if (Main.DEBUG) {
|
if (Main.DEBUG) {
|
||||||
Logger logger = Logger.getLogger(LOGNAME);
|
Logger logger = Logger.getLogger(LOGNAME);
|
||||||
try {
|
try {
|
||||||
FileHandler fileHandler = new FileHandler(LOGFILE, true);
|
FileHandler fileHandler = new FileHandler(LOGFILE, true);
|
||||||
logger.addHandler(fileHandler);
|
logger.addHandler(fileHandler);
|
||||||
SimpleFormatter formatter = new SimpleFormatter();
|
SimpleFormatter formatter = new SimpleFormatter();
|
||||||
fileHandler.setFormatter(formatter);
|
fileHandler.setFormatter(formatter);
|
||||||
}
|
}
|
||||||
catch (SecurityException | IOException e) {
|
catch (SecurityException | IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Agregar un log al logger.
|
* Agregar un log al logger.
|
||||||
*
|
*
|
||||||
* @param level Level: El tipo de error o mensaje que ha sido generado.
|
* @param level Level: El tipo de error o mensaje que ha sido generado.
|
||||||
* @param mensaje String: El mensaje de lo que pasó.
|
* @param mensaje String: El mensaje de lo que pasó.
|
||||||
*/
|
*/
|
||||||
static public void log(Level level, String mensaje) {
|
static public void log(Level level, String mensaje) {
|
||||||
if (Main.DEBUG) {
|
if (Main.DEBUG) {
|
||||||
Logger.getLogger(LOGNAME).log(level, mensaje);
|
Logger.getLogger(LOGNAME).log(level, mensaje);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,79 +25,79 @@ import java.util.logging.Level;
|
|||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
*/
|
*/
|
||||||
public class Main extends Application {
|
public class Main extends Application {
|
||||||
/**
|
/**
|
||||||
* Estado de depuración.
|
* Estado de depuración.
|
||||||
*/
|
*/
|
||||||
static final public boolean DEBUG = false;
|
static final public boolean DEBUG = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicilizar el logeo y lanzar la interfaz grafica.
|
* Inicilizar el logeo y lanzar la interfaz grafica.
|
||||||
*
|
*
|
||||||
* @param args String[]: Argumentos desde la consola.
|
* @param args String[]: Argumentos desde la consola.
|
||||||
*/
|
*/
|
||||||
public static void main(String args[]) {
|
public static void main(String args[]) {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
new Logs();
|
new Logs();
|
||||||
}
|
}
|
||||||
|
|
||||||
launch(args);
|
launch(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cambiar el icono de una ventana.
|
* Mostrar una ventana con mensaje en la pantalla.
|
||||||
*
|
*
|
||||||
* @param dialog Dialog: El Dialog a cambiar.
|
* @param mensaje String: El mensaje a mostrar.
|
||||||
* @param clase Class: La clase usado para abrir el Stream.
|
* @param resourceBundle ResourceBundle: Contiene el idioma actual.
|
||||||
*/
|
*/
|
||||||
static public void setIcon(Dialog dialog, Class clase) {
|
static public void mostrarError(String mensaje, ResourceBundle resourceBundle) {
|
||||||
Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
|
ButtonType botonCerrar = new ButtonType(resourceBundle.getString("cerrar"), ButtonBar.ButtonData.OK_DONE);
|
||||||
stage.getIcons().add(new Image(clase.getResourceAsStream("/cl/cromer/estructuras/images/icon.png")));
|
Dialog<String> dialog = new Dialog<>();
|
||||||
}
|
dialog.setTitle(resourceBundle.getString("error"));
|
||||||
|
dialog.setContentText(mensaje);
|
||||||
|
dialog.getDialogPane().getButtonTypes().add(botonCerrar);
|
||||||
|
dialog.getDialogPane().getScene().getWindow().sizeToScene();
|
||||||
|
Main.setIcon(dialog, Main.class);
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mostrar una ventana con mensaje en la pantalla.
|
* Cambiar el icono de una ventana.
|
||||||
*
|
*
|
||||||
* @param mensaje String: El mensaje a mostrar.
|
* @param dialog Dialog: El Dialog a cambiar.
|
||||||
* @param resourceBundle ResourceBundle: Contiene el idioma actual.
|
* @param clase Class: La clase usado para abrir el Stream.
|
||||||
*/
|
*/
|
||||||
static public void mostrarError(String mensaje, ResourceBundle resourceBundle) {
|
static public void setIcon(Dialog dialog, Class clase) {
|
||||||
ButtonType botonCerrar = new ButtonType(resourceBundle.getString("cerrar"), ButtonBar.ButtonData.OK_DONE);
|
Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
|
||||||
Dialog<String> dialog = new Dialog<>();
|
stage.getIcons().add(new Image(clase.getResourceAsStream("/cl/cromer/estructuras/images/icon.png")));
|
||||||
dialog.setTitle(resourceBundle.getString("error"));
|
}
|
||||||
dialog.setContentText(mensaje);
|
|
||||||
dialog.getDialogPane().getButtonTypes().add(botonCerrar);
|
|
||||||
dialog.getDialogPane().getScene().getWindow().sizeToScene();
|
|
||||||
Main.setIcon(dialog, Main.class);
|
|
||||||
dialog.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear el stage y la scene para la aplicación grafica.
|
* Crear el stage y la scene para la aplicación grafica.
|
||||||
*
|
*
|
||||||
* @param stage Stage: El primer stage donde va todas las cosas visuales.
|
* @param stage Stage: El primer stage donde va todas las cosas visuales.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void start(Stage stage) {
|
public void start(Stage stage) {
|
||||||
Locale locale = new Locale("es", "ES");
|
Locale locale = new Locale("es", "ES");
|
||||||
ResourceBundle resourceBundle = ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale);
|
ResourceBundle resourceBundle = ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Parent parent = FXMLLoader.load(getClass().getResource("/cl/cromer/estructuras/fxml/main.fxml"), ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale));
|
Parent parent = FXMLLoader.load(getClass().getResource("/cl/cromer/estructuras/fxml/main.fxml"), ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale));
|
||||||
stage.setTitle(resourceBundle.getString("titulo"));
|
stage.setTitle(resourceBundle.getString("titulo"));
|
||||||
Scene scene = new Scene(parent, 1024, 768);
|
Scene scene = new Scene(parent, 1024, 768);
|
||||||
scene.getStylesheets().add("/cl/cromer/estructuras/css/style.css");
|
scene.getStylesheets().add("/cl/cromer/estructuras/css/style.css");
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
}
|
}
|
||||||
catch (IOException exception) {
|
catch (IOException exception) {
|
||||||
// Este error es fatal, hay que cerrar la aplicación.
|
// Este error es fatal, hay que cerrar la aplicación.
|
||||||
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
|
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
|
||||||
stage.close();
|
stage.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
//stage.setMaximized(true);
|
//stage.setMaximized(true);
|
||||||
stage.setMinHeight(640);
|
stage.setMinHeight(640);
|
||||||
stage.setMinWidth(768);
|
stage.setMinWidth(768);
|
||||||
stage.getIcons().add(new Image(getClass().getResourceAsStream("/cl/cromer/estructuras/images/icon.png")));
|
stage.getIcons().add(new Image(getClass().getResourceAsStream("/cl/cromer/estructuras/images/icon.png")));
|
||||||
stage.show();
|
stage.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -25,352 +25,352 @@ import static cl.cromer.estructuras.ListaEnlazadaTipos.SIMPLE;
|
|||||||
* Controlar las acciones cuando una opción es elegido en el menu.
|
* Controlar las acciones cuando una opción es elegido en el menu.
|
||||||
*/
|
*/
|
||||||
public class MenuController extends VBox implements Initializable {
|
public class MenuController extends VBox implements Initializable {
|
||||||
/**
|
/**
|
||||||
* La barra del menu.
|
* La barra del menu.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private MenuBar menuBar;
|
private MenuBar menuBar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Los idiomas.
|
* Los idiomas.
|
||||||
*/
|
*/
|
||||||
private ResourceBundle resourceBundle;
|
private ResourceBundle resourceBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicialicar el menu con el idioma.
|
* Inicialicar el menu con el idioma.
|
||||||
*
|
*
|
||||||
* @param location URL: Tiene URL de FXML en uso.
|
* @param location URL: Tiene URL de FXML en uso.
|
||||||
* @param resourceBundle: Tiene los idiomas.
|
* @param resourceBundle: Tiene los idiomas.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void initialize(URL location, ResourceBundle resourceBundle) {
|
public void initialize(URL location, ResourceBundle resourceBundle) {
|
||||||
this.resourceBundle = resourceBundle;
|
this.resourceBundle = resourceBundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Array Simple.
|
* Click en Array Simple.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuArraySimple() {
|
protected void menuArraySimple() {
|
||||||
ArrayTipos arrayTipos = new ArrayTipos(ArrayTipos.SIMPLE);
|
ArrayTipos arrayTipos = new ArrayTipos(ArrayTipos.SIMPLE);
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloArraySimple"),
|
resourceBundle.getString("tituloArraySimple"),
|
||||||
"/cl/cromer/estructuras/fxml/array.fxml",
|
"/cl/cromer/estructuras/fxml/array.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css",
|
"/cl/cromer/estructuras/css/style.css",
|
||||||
arrayTipos
|
arrayTipos
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cargar el fxml, css y titulo.
|
* Cargar el fxml, css y titulo.
|
||||||
*
|
*
|
||||||
* @param title String: El titulo de la escena.
|
* @param title String: El titulo de la escena.
|
||||||
* @param fxml String: El archivo de fxml.
|
* @param fxml String: El archivo de fxml.
|
||||||
* @param css String: El archivo de css.
|
* @param css String: El archivo de css.
|
||||||
* @param object Object: El objeto a pasar a la nueva escena.
|
* @param object Object: El objeto a pasar a la nueva escena.
|
||||||
*/
|
*/
|
||||||
private void loadStage(String title, String fxml, String css, Object object) {
|
private void loadStage(String title, String fxml, String css, Object object) {
|
||||||
Scene scene = menuBar.getScene();
|
Scene scene = menuBar.getScene();
|
||||||
Stage stage = (Stage) scene.getWindow();
|
Stage stage = (Stage) scene.getWindow();
|
||||||
|
|
||||||
openFXML(fxml, scene, stage);
|
openFXML(fxml, scene, stage);
|
||||||
|
|
||||||
scene.getStylesheets().add(css);
|
scene.getStylesheets().add(css);
|
||||||
scene.setUserData(object);
|
scene.setUserData(object);
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
stage.setTitle(this.resourceBundle.getString("titulo") + " - " + title);
|
stage.setTitle(this.resourceBundle.getString("titulo") + " - " + title);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openFXML(String fxml, Scene scene, Stage stage) {
|
private void openFXML(String fxml, Scene scene, Stage stage) {
|
||||||
try {
|
try {
|
||||||
Parent parent = FXMLLoader.load(getClass().getResource(fxml), this.resourceBundle);
|
Parent parent = FXMLLoader.load(getClass().getResource(fxml), this.resourceBundle);
|
||||||
scene.setRoot(parent);
|
scene.setRoot(parent);
|
||||||
}
|
}
|
||||||
catch (IOException exception) {
|
catch (IOException exception) {
|
||||||
// Este error es fatal, hay que cerrar la aplicación.
|
// Este error es fatal, hay que cerrar la aplicación.
|
||||||
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
|
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
|
||||||
stage.close();
|
stage.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Array Ordenado.
|
* Click en Array Ordenado.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuArrayOrdenado() {
|
protected void menuArrayOrdenado() {
|
||||||
ArrayTipos arrayTipos = new ArrayTipos(ArrayTipos.ORDENADO);
|
ArrayTipos arrayTipos = new ArrayTipos(ArrayTipos.ORDENADO);
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloArrayOrdenado"),
|
resourceBundle.getString("tituloArrayOrdenado"),
|
||||||
"/cl/cromer/estructuras/fxml/array.fxml",
|
"/cl/cromer/estructuras/fxml/array.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css",
|
"/cl/cromer/estructuras/css/style.css",
|
||||||
arrayTipos
|
arrayTipos
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Burbuja.
|
* Click en Burbuja.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuBurbuja() {
|
protected void menuBurbuja() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloBurbuja"),
|
resourceBundle.getString("tituloBurbuja"),
|
||||||
"/cl/cromer/estructuras/fxml/burbuja.fxml",
|
"/cl/cromer/estructuras/fxml/burbuja.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cargar el fxml, css y titulo.
|
* Cargar el fxml, css y titulo.
|
||||||
*
|
*
|
||||||
* @param title String: El titulo de la escena.
|
* @param title String: El titulo de la escena.
|
||||||
* @param fxml String: El archivo de fxml.
|
* @param fxml String: El archivo de fxml.
|
||||||
* @param css String: El archivo de css.
|
* @param css String: El archivo de css.
|
||||||
*/
|
*/
|
||||||
private void loadStage(String title, String fxml, String css) {
|
private void loadStage(String title, String fxml, String css) {
|
||||||
Scene scene = menuBar.getScene();
|
Scene scene = menuBar.getScene();
|
||||||
Stage stage = (Stage) scene.getWindow();
|
Stage stage = (Stage) scene.getWindow();
|
||||||
|
|
||||||
openFXML(fxml, scene, stage);
|
openFXML(fxml, scene, stage);
|
||||||
|
|
||||||
scene.getStylesheets().add(css);
|
scene.getStylesheets().add(css);
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
stage.setTitle(this.resourceBundle.getString("titulo") + " - " + title);
|
stage.setTitle(this.resourceBundle.getString("titulo") + " - " + title);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Inserción.
|
* Click en Inserción.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuInsercion() {
|
protected void menuInsercion() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloInsercion"),
|
resourceBundle.getString("tituloInsercion"),
|
||||||
"/cl/cromer/estructuras/fxml/insercion.fxml",
|
"/cl/cromer/estructuras/fxml/insercion.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Selecion.
|
* Click en Selecion.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuSeleccion() {
|
protected void menuSeleccion() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloSeleccion"),
|
resourceBundle.getString("tituloSeleccion"),
|
||||||
"/cl/cromer/estructuras/fxml/seleccion.fxml",
|
"/cl/cromer/estructuras/fxml/seleccion.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Shell.
|
* Click en Shell.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuShell() {
|
protected void menuShell() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloShell"),
|
resourceBundle.getString("tituloShell"),
|
||||||
"/cl/cromer/estructuras/fxml/shell.fxml",
|
"/cl/cromer/estructuras/fxml/shell.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Quick.
|
* Click en Quick.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuQuick() {
|
protected void menuQuick() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloQuick"),
|
resourceBundle.getString("tituloQuick"),
|
||||||
"/cl/cromer/estructuras/fxml/quick.fxml",
|
"/cl/cromer/estructuras/fxml/quick.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Merge.
|
* Click en Merge.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuMerge() {
|
protected void menuMerge() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloMerge"),
|
resourceBundle.getString("tituloMerge"),
|
||||||
"/cl/cromer/estructuras/fxml/merge.fxml",
|
"/cl/cromer/estructuras/fxml/merge.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Lista Enlazada Simple.
|
* Click en Lista Enlazada Simple.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuListaEnlazadaSimple() {
|
protected void menuListaEnlazadaSimple() {
|
||||||
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(SIMPLE);
|
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(SIMPLE);
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloListaEnlazadaSimple"),
|
resourceBundle.getString("tituloListaEnlazadaSimple"),
|
||||||
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
|
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css",
|
"/cl/cromer/estructuras/css/style.css",
|
||||||
listaEnlazadaTipos
|
listaEnlazadaTipos
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Lista Enlazada Circular.
|
* Click en Lista Enlazada Circular.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuListaEnlazadaCircular() {
|
protected void menuListaEnlazadaCircular() {
|
||||||
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.CIRCULAR);
|
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.CIRCULAR);
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloListaEnlazadaCircular"),
|
resourceBundle.getString("tituloListaEnlazadaCircular"),
|
||||||
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
|
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css",
|
"/cl/cromer/estructuras/css/style.css",
|
||||||
listaEnlazadaTipos
|
listaEnlazadaTipos
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Lista Enlazada Doble.
|
* Click en Lista Enlazada Doble.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuListaEnlazadaDoble() {
|
protected void menuListaEnlazadaDoble() {
|
||||||
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA);
|
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA);
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloListaEnlazadaDoble"),
|
resourceBundle.getString("tituloListaEnlazadaDoble"),
|
||||||
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
|
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css",
|
"/cl/cromer/estructuras/css/style.css",
|
||||||
listaEnlazadaTipos
|
listaEnlazadaTipos
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Pila.
|
* Click en Pila.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuPila() {
|
protected void menuPila() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloPila"),
|
resourceBundle.getString("tituloPila"),
|
||||||
"/cl/cromer/estructuras/fxml/pila.fxml",
|
"/cl/cromer/estructuras/fxml/pila.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Cola.
|
* Click en Cola.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuCola() {
|
protected void menuCola() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloCola"),
|
resourceBundle.getString("tituloCola"),
|
||||||
"/cl/cromer/estructuras/fxml/cola.fxml",
|
"/cl/cromer/estructuras/fxml/cola.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Hash Table.
|
* Click en Hash Table.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuHashTable() {
|
protected void menuHashTable() {
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloTablaHash"),
|
resourceBundle.getString("tituloTablaHash"),
|
||||||
"/cl/cromer/estructuras/fxml/hashTable.fxml",
|
"/cl/cromer/estructuras/fxml/hashTable.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css"
|
"/cl/cromer/estructuras/css/style.css"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Ingles.
|
* Click en Ingles.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuIngles() {
|
protected void menuIngles() {
|
||||||
ButtonType botonCambiar = new ButtonType(resourceBundle.getString("cambiar"), ButtonBar.ButtonData.OK_DONE);
|
ButtonType botonCambiar = new ButtonType(resourceBundle.getString("cambiar"), ButtonBar.ButtonData.OK_DONE);
|
||||||
ButtonType botonCancelar = new ButtonType(resourceBundle.getString("cancelar"), ButtonBar.ButtonData.CANCEL_CLOSE);
|
ButtonType botonCancelar = new ButtonType(resourceBundle.getString("cancelar"), ButtonBar.ButtonData.CANCEL_CLOSE);
|
||||||
Dialog<ButtonType> dialog = new Dialog<>();
|
Dialog<ButtonType> dialog = new Dialog<>();
|
||||||
dialog.setTitle(resourceBundle.getString("cambiarIdioma"));
|
dialog.setTitle(resourceBundle.getString("cambiarIdioma"));
|
||||||
dialog.setContentText(resourceBundle.getString("cambiarIdiomaMensaje"));
|
dialog.setContentText(resourceBundle.getString("cambiarIdiomaMensaje"));
|
||||||
dialog.getDialogPane().getButtonTypes().add(botonCancelar);
|
dialog.getDialogPane().getButtonTypes().add(botonCancelar);
|
||||||
dialog.getDialogPane().getButtonTypes().add(botonCambiar);
|
dialog.getDialogPane().getButtonTypes().add(botonCambiar);
|
||||||
dialog.getDialogPane().getScene().getWindow().sizeToScene();
|
dialog.getDialogPane().getScene().getWindow().sizeToScene();
|
||||||
Main.setIcon(dialog, getClass());
|
Main.setIcon(dialog, getClass());
|
||||||
|
|
||||||
Optional<ButtonType> result = dialog.showAndWait();
|
Optional<ButtonType> result = dialog.showAndWait();
|
||||||
if (result.isPresent() && result.get() == botonCambiar) {
|
if (result.isPresent() && result.get() == botonCambiar) {
|
||||||
// Si hace click en cambiar, cambiar el idioma y reiniciar.
|
// Si hace click en cambiar, cambiar el idioma y reiniciar.
|
||||||
Locale locale = new Locale("en", "EN");
|
Locale locale = new Locale("en", "EN");
|
||||||
ResourceBundle resourceBundle = ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale);
|
ResourceBundle resourceBundle = ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale);
|
||||||
|
|
||||||
loadStage(
|
loadStage(
|
||||||
"/cl/cromer/estructuras/fxml/main.fxml",
|
"/cl/cromer/estructuras/fxml/main.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css",
|
"/cl/cromer/estructuras/css/style.css",
|
||||||
resourceBundle
|
resourceBundle
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cargar el fxml y css.
|
* Cargar el fxml y css.
|
||||||
*
|
*
|
||||||
* @param fxml String: El archivo de fxml.
|
* @param fxml String: El archivo de fxml.
|
||||||
* @param css String: El archivo de css.
|
* @param css String: El archivo de css.
|
||||||
* @param resourceBundle ResourceBundle: El idioma nuevo para cambiarlo.
|
* @param resourceBundle ResourceBundle: El idioma nuevo para cambiarlo.
|
||||||
*/
|
*/
|
||||||
private void loadStage(String fxml, String css, ResourceBundle resourceBundle) {
|
private void loadStage(String fxml, String css, ResourceBundle resourceBundle) {
|
||||||
Scene scene = menuBar.getScene();
|
Scene scene = menuBar.getScene();
|
||||||
Stage stage = (Stage) scene.getWindow();
|
Stage stage = (Stage) scene.getWindow();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Parent parent = FXMLLoader.load(getClass().getResource(fxml), resourceBundle);
|
Parent parent = FXMLLoader.load(getClass().getResource(fxml), resourceBundle);
|
||||||
scene.setRoot(parent);
|
scene.setRoot(parent);
|
||||||
}
|
}
|
||||||
catch (IOException exception) {
|
catch (IOException exception) {
|
||||||
// Este error es fatal, hay que cerrar la aplicación.
|
// Este error es fatal, hay que cerrar la aplicación.
|
||||||
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
|
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
|
||||||
stage.close();
|
stage.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
scene.getStylesheets().add(css);
|
scene.getStylesheets().add(css);
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
stage.setTitle(resourceBundle.getString("titulo"));
|
stage.setTitle(resourceBundle.getString("titulo"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Español.
|
* Click en Español.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuEspanol() {
|
protected void menuEspanol() {
|
||||||
ButtonType botonCambiar = new ButtonType(resourceBundle.getString("cambiar"), ButtonBar.ButtonData.OK_DONE);
|
ButtonType botonCambiar = new ButtonType(resourceBundle.getString("cambiar"), ButtonBar.ButtonData.OK_DONE);
|
||||||
ButtonType botonCancelar = new ButtonType(resourceBundle.getString("cancelar"), ButtonBar.ButtonData.CANCEL_CLOSE);
|
ButtonType botonCancelar = new ButtonType(resourceBundle.getString("cancelar"), ButtonBar.ButtonData.CANCEL_CLOSE);
|
||||||
Dialog<ButtonType> dialog = new Dialog<>();
|
Dialog<ButtonType> dialog = new Dialog<>();
|
||||||
dialog.setTitle(resourceBundle.getString("cambiarIdioma"));
|
dialog.setTitle(resourceBundle.getString("cambiarIdioma"));
|
||||||
dialog.setContentText(resourceBundle.getString("cambiarIdiomaMensaje"));
|
dialog.setContentText(resourceBundle.getString("cambiarIdiomaMensaje"));
|
||||||
dialog.getDialogPane().getButtonTypes().add(botonCancelar);
|
dialog.getDialogPane().getButtonTypes().add(botonCancelar);
|
||||||
dialog.getDialogPane().getButtonTypes().add(botonCambiar);
|
dialog.getDialogPane().getButtonTypes().add(botonCambiar);
|
||||||
dialog.getDialogPane().getScene().getWindow().sizeToScene();
|
dialog.getDialogPane().getScene().getWindow().sizeToScene();
|
||||||
Main.setIcon(dialog, getClass());
|
Main.setIcon(dialog, getClass());
|
||||||
|
|
||||||
Optional<ButtonType> result = dialog.showAndWait();
|
Optional<ButtonType> result = dialog.showAndWait();
|
||||||
if (result.isPresent() && result.get() == botonCambiar) {
|
if (result.isPresent() && result.get() == botonCambiar) {
|
||||||
// Si hace click en cambiar, cambiar el idioma y reiniciar.
|
// Si hace click en cambiar, cambiar el idioma y reiniciar.
|
||||||
Locale locale = new Locale("es", "ES");
|
Locale locale = new Locale("es", "ES");
|
||||||
ResourceBundle resourceBundle = ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale);
|
ResourceBundle resourceBundle = ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale);
|
||||||
|
|
||||||
loadStage(
|
loadStage(
|
||||||
"/cl/cromer/estructuras/fxml/main.fxml",
|
"/cl/cromer/estructuras/fxml/main.fxml",
|
||||||
"/cl/cromer/estructuras/css/style.css",
|
"/cl/cromer/estructuras/css/style.css",
|
||||||
resourceBundle
|
resourceBundle
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click en Acerca.
|
* Click en Acerca.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuAcerca() {
|
protected void menuAcerca() {
|
||||||
ButtonType botonCerrar = new ButtonType(resourceBundle.getString("cerrar"), ButtonBar.ButtonData.OK_DONE);
|
ButtonType botonCerrar = new ButtonType(resourceBundle.getString("cerrar"), ButtonBar.ButtonData.OK_DONE);
|
||||||
Dialog<String> dialog = new Dialog<>();
|
Dialog<String> dialog = new Dialog<>();
|
||||||
dialog.setTitle(resourceBundle.getString("acerca"));
|
dialog.setTitle(resourceBundle.getString("acerca"));
|
||||||
dialog.setContentText(resourceBundle.getString("credito"));
|
dialog.setContentText(resourceBundle.getString("credito"));
|
||||||
dialog.getDialogPane().getButtonTypes().add(botonCerrar);
|
dialog.getDialogPane().getButtonTypes().add(botonCerrar);
|
||||||
dialog.getDialogPane().getScene().getWindow().sizeToScene();
|
dialog.getDialogPane().getScene().getWindow().sizeToScene();
|
||||||
Main.setIcon(dialog, getClass());
|
Main.setIcon(dialog, getClass());
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -46,7 +46,7 @@ public class MergeController implements Initializable {
|
|||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -112,7 +112,7 @@ public class MergeController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/merge/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/merge/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoMerge.setText(codigoTexto);
|
codigoMerge.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.merge(true)) {
|
if (! array.merge(true)) {
|
||||||
Main.mostrarError(resourceBundle.getString("mergeYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("mergeYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,10 +132,10 @@ public class MergeController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/merge/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/merge/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoMerge.setText(codigoTexto);
|
codigoMerge.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.merge(false)) {
|
if (! array.merge(false)) {
|
||||||
Main.mostrarError(resourceBundle.getString("mergeYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("mergeYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,61 +5,61 @@ import java.util.List;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public class Palabras {
|
public class Palabras {
|
||||||
final private List<String> palabras;
|
final private List<String> palabras;
|
||||||
|
|
||||||
public Palabras() {
|
public Palabras() {
|
||||||
palabras = new ArrayList<>();
|
palabras = new ArrayList<>();
|
||||||
palabras.add("hola");
|
palabras.add("hola");
|
||||||
palabras.add("mundo");
|
palabras.add("mundo");
|
||||||
palabras.add("cruel");
|
palabras.add("cruel");
|
||||||
palabras.add("mi");
|
palabras.add("mi");
|
||||||
palabras.add("tiempo");
|
palabras.add("tiempo");
|
||||||
palabras.add("es");
|
palabras.add("es");
|
||||||
palabras.add("limitado");
|
palabras.add("limitado");
|
||||||
palabras.add("pero");
|
palabras.add("pero");
|
||||||
palabras.add("puedo");
|
palabras.add("puedo");
|
||||||
palabras.add("lograr");
|
palabras.add("lograr");
|
||||||
palabras.add("el");
|
palabras.add("el");
|
||||||
palabras.add("proyecto");
|
palabras.add("proyecto");
|
||||||
palabras.add("si");
|
palabras.add("si");
|
||||||
palabras.add("trabajo");
|
palabras.add("trabajo");
|
||||||
palabras.add("bien");
|
palabras.add("bien");
|
||||||
palabras.add("computador");
|
palabras.add("computador");
|
||||||
palabras.add("test");
|
palabras.add("test");
|
||||||
palabras.add("mouse");
|
palabras.add("mouse");
|
||||||
palabras.add("clase");
|
palabras.add("clase");
|
||||||
palabras.add("software");
|
palabras.add("software");
|
||||||
palabras.add("hardware");
|
palabras.add("hardware");
|
||||||
palabras.add("vaso");
|
palabras.add("vaso");
|
||||||
palabras.add("mesa");
|
palabras.add("mesa");
|
||||||
palabras.add("tabla");
|
palabras.add("tabla");
|
||||||
palabras.add("color");
|
palabras.add("color");
|
||||||
palabras.add("calor");
|
palabras.add("calor");
|
||||||
palabras.add("edad");
|
palabras.add("edad");
|
||||||
palabras.add("olor");
|
palabras.add("olor");
|
||||||
palabras.add("ganar");
|
palabras.add("ganar");
|
||||||
palabras.add("dormir");
|
palabras.add("dormir");
|
||||||
palabras.add("tomar");
|
palabras.add("tomar");
|
||||||
palabras.add("comer");
|
palabras.add("comer");
|
||||||
palabras.add("pensar");
|
palabras.add("pensar");
|
||||||
palabras.add("programar");
|
palabras.add("programar");
|
||||||
palabras.add("hablar");
|
palabras.add("hablar");
|
||||||
palabras.add("sentir");
|
palabras.add("sentir");
|
||||||
palabras.add("perder");
|
palabras.add("perder");
|
||||||
palabras.add("abrir");
|
palabras.add("abrir");
|
||||||
palabras.add("cerrar");
|
palabras.add("cerrar");
|
||||||
palabras.add("mirar");
|
palabras.add("mirar");
|
||||||
palabras.add("agua");
|
palabras.add("agua");
|
||||||
palabras.add("me");
|
palabras.add("me");
|
||||||
palabras.add("llaman");
|
palabras.add("llaman");
|
||||||
palabras.add("gringo");
|
palabras.add("gringo");
|
||||||
palabras.add("loco");
|
palabras.add("loco");
|
||||||
palabras.add("no");
|
palabras.add("no");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPalabra() {
|
public String getPalabra() {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
int numero = random.nextInt(palabras.size());
|
int numero = random.nextInt(palabras.size());
|
||||||
return palabras.get(numero);
|
return palabras.get(numero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,117 +8,118 @@ import java.util.Random;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final public class Pila {
|
final public class Pila {
|
||||||
/**
|
/**
|
||||||
* La pila.
|
* La pila.
|
||||||
*/
|
*/
|
||||||
private String pila[];
|
private String pila[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La cantidad de elementos en la pila.
|
* La cantidad de elementos en la pila.
|
||||||
*/
|
*/
|
||||||
private int size;
|
private int size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicializar.
|
* Inicializar.
|
||||||
*/
|
*/
|
||||||
public Pila() {
|
public Pila() {
|
||||||
pila = null;
|
pila = null;
|
||||||
size = 0;
|
size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pop un valor de encima de la pila.
|
* Pop un valor de encima de la pila.
|
||||||
*
|
*
|
||||||
* @return boolean: Verdad si fue exitoso.
|
* @return boolean: Verdad si fue exitoso.
|
||||||
*/
|
*/
|
||||||
public boolean pop() {
|
public boolean pop() {
|
||||||
if (this.pila != null && size() > 0) {
|
if (this.pila != null && size() > 0) {
|
||||||
String pila[] = new String[this.pila.length - 1];
|
String pila[] = new String[this.pila.length - 1];
|
||||||
System.arraycopy(this.pila, 0, pila, 0, pila.length);
|
System.arraycopy(this.pila, 0, pila, 0, pila.length);
|
||||||
this.pila = pila;
|
this.pila = pila;
|
||||||
size--;
|
size--;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la cantidad de elementos en la pila.
|
* Devolver la cantidad de elementos en la pila.
|
||||||
*
|
*
|
||||||
* @return int: La cantidad de elementos.
|
* @return int: La cantidad de elementos.
|
||||||
*/
|
*/
|
||||||
public int size() {
|
public int size() {
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Peek al valor que está encima de la pila.
|
* Peek al valor que está encima de la pila.
|
||||||
*
|
*
|
||||||
* @return int: El valor que está encima de la pila.
|
* @return int: El valor que está encima de la pila.
|
||||||
*/
|
*/
|
||||||
public int peek() {
|
public int peek() {
|
||||||
if (pila != null && size() > 0) {
|
if (pila != null && size() > 0) {
|
||||||
return Integer.valueOf(pila[pila.length - 1]);
|
return Integer.valueOf(pila[pila.length - 1]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return Integer.MIN_VALUE;
|
return Integer.MIN_VALUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el valor que está en un indice de la pila.
|
* Devolver el valor que está en un indice de la pila.
|
||||||
*
|
*
|
||||||
* @param indice int: El indice que desea devolver.
|
* @param indice int: El indice que desea devolver.
|
||||||
* @return String: El valor que está guardado en el indice.
|
*
|
||||||
*/
|
* @return String: El valor que está guardado en el indice.
|
||||||
public String getIndice(int indice) {
|
*/
|
||||||
if (pila != null && indice >= 0 && indice < pila.length) {
|
public String getIndice(int indice) {
|
||||||
return pila[indice];
|
if (pila != null && indice >= 0 && indice < pila.length) {
|
||||||
}
|
return pila[indice];
|
||||||
else {
|
}
|
||||||
return null;
|
else {
|
||||||
}
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Llenar la pila con valores al azar.
|
* Llenar la pila con valores al azar.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("Duplicates")
|
@SuppressWarnings("Duplicates")
|
||||||
public void llenar() {
|
public void llenar() {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
int maximo = 99;
|
int maximo = 99;
|
||||||
int minimo = 0;
|
int minimo = 0;
|
||||||
int rango = maximo - minimo + 1;
|
int rango = maximo - minimo + 1;
|
||||||
|
|
||||||
for (int i = size(); i < 10; i++) {
|
for (int i = size(); i < 10; i++) {
|
||||||
int numero = random.nextInt(rango) + minimo;
|
int numero = random.nextInt(rango) + minimo;
|
||||||
push(numero);
|
push(numero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Push un valor en la pila encima.
|
* Push un valor en la pila encima.
|
||||||
*
|
*
|
||||||
* @param valor int: El valor a push.
|
* @param valor int: El valor a push.
|
||||||
*/
|
*/
|
||||||
public void push(int valor) {
|
public void push(int valor) {
|
||||||
if (this.pila != null) {
|
if (this.pila != null) {
|
||||||
String pila[] = new String[this.pila.length + 1];
|
String pila[] = new String[this.pila.length + 1];
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < this.pila.length; i++) {
|
for (i = 0; i < this.pila.length; i++) {
|
||||||
pila[i] = this.pila[i];
|
pila[i] = this.pila[i];
|
||||||
}
|
}
|
||||||
pila[i] = String.valueOf(valor);
|
pila[i] = String.valueOf(valor);
|
||||||
this.pila = pila;
|
this.pila = pila;
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String pila[] = new String[1];
|
String pila[] = new String[1];
|
||||||
pila[0] = String.valueOf(valor);
|
pila[0] = String.valueOf(valor);
|
||||||
this.pila = pila;
|
this.pila = pila;
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,190 +17,190 @@ import java.util.logging.Level;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
public class PilaController implements Initializable {
|
public class PilaController implements Initializable {
|
||||||
/**
|
/**
|
||||||
* La caja para ingresar textos.
|
* La caja para ingresar textos.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private TextFieldLimited valorPila;
|
private TextFieldLimited valorPila;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde poner el contenido de array.
|
* Donde poner el contenido de array.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private VBox contenidoPila;
|
private VBox contenidoPila;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde va el codigo a mostrar a la pantalla.
|
* Donde va el codigo a mostrar a la pantalla.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private Text codigoPila;
|
private Text codigoPila;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La escena donde está cosas graficas.
|
* La escena donde está cosas graficas.
|
||||||
*/
|
*/
|
||||||
private Scene scene;
|
private Scene scene;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde está guardado los idiomas.
|
* Donde está guardado los idiomas.
|
||||||
*/
|
*/
|
||||||
private ResourceBundle resourceBundle;
|
private ResourceBundle resourceBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La pila usado en la aplicación.
|
* La pila usado en la aplicación.
|
||||||
*/
|
*/
|
||||||
private Pila pila;
|
private Pila pila;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Grafico rectangulos.
|
* Grafico rectangulos.
|
||||||
*/
|
*/
|
||||||
private Grafico grafico;
|
private Grafico grafico;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void initialize(URL location, ResourceBundle resourceBundle) {
|
public void initialize(URL location, ResourceBundle resourceBundle) {
|
||||||
this.resourceBundle = resourceBundle;
|
this.resourceBundle = resourceBundle;
|
||||||
|
|
||||||
pila = new Pila();
|
pila = new Pila();
|
||||||
|
|
||||||
scene = null;
|
scene = null;
|
||||||
Colores colores = new Colores();
|
Colores colores = new Colores();
|
||||||
|
|
||||||
for (int i = 9; i >= 0; i--) {
|
for (int i = 9; i >= 0; i--) {
|
||||||
contenidoPila.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i)));
|
contenidoPila.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i)));
|
||||||
colores.siguinteColor();
|
colores.siguinteColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Llenar la pila con numeros al azar.
|
* Llenar la pila con numeros al azar.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonLlenar() {
|
protected void botonLlenar() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoPila.getScene();
|
scene = contenidoPila.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
pila.llenar();
|
pila.llenar();
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Poner los valores en el grafico.
|
* Poner los valores en el grafico.
|
||||||
*/
|
*/
|
||||||
private void generarGrafico() {
|
private void generarGrafico() {
|
||||||
grafico.removerDestacar();
|
grafico.removerDestacar();
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
|
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
|
||||||
text.setText(pila.getIndice(i));
|
text.setText(pila.getIndice(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vaciar la pila de todos los valores.
|
* Vaciar la pila de todos los valores.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonVaciar() {
|
protected void botonVaciar() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoPila.getScene();
|
scene = contenidoPila.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
pila = new Pila();
|
pila = new Pila();
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Push un valor a la pila y mostrar el codigo en la pantalla.
|
* Push un valor a la pila y mostrar el codigo en la pantalla.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonPush() {
|
protected void botonPush() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoPila.getScene();
|
scene = contenidoPila.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/pila/push")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/pila/push")).useDelimiter("\\Z").next();
|
||||||
codigoPila.setText(codigoTexto);
|
codigoPila.setText(codigoTexto);
|
||||||
|
|
||||||
if (valorPila.getText() != null && !valorPila.getText().trim().equals("")) {
|
if (valorPila.getText() != null && ! valorPila.getText().trim().equals("")) {
|
||||||
try {
|
try {
|
||||||
if (pila.size() < 10) {
|
if (pila.size() < 10) {
|
||||||
pila.push(Integer.valueOf(valorPila.getText()));
|
pila.push(Integer.valueOf(valorPila.getText()));
|
||||||
valorPila.setText("");
|
valorPila.setText("");
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Main.mostrarError(resourceBundle.getString("pilaLlena"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("pilaLlena"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (NumberFormatException exception) {
|
catch (NumberFormatException exception) {
|
||||||
// El error no es fatal, sigue
|
// El error no es fatal, sigue
|
||||||
Logs.log(Level.WARNING, "No es tipo int.");
|
Logs.log(Level.WARNING, "No es tipo int.");
|
||||||
Main.mostrarError(resourceBundle.getString("pilaNoValor"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("pilaNoValor"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Main.mostrarError(resourceBundle.getString("pilaNoValor"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("pilaNoValor"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pop un valor de la pila si existe y mostrar el codigo en la pantalla.
|
* Pop un valor de la pila si existe y mostrar el codigo en la pantalla.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonPop() {
|
protected void botonPop() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoPila.getScene();
|
scene = contenidoPila.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/pila/pop")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/pila/pop")).useDelimiter("\\Z").next();
|
||||||
codigoPila.setText(codigoTexto);
|
codigoPila.setText(codigoTexto);
|
||||||
|
|
||||||
if (pila.size() > 0) {
|
if (pila.size() > 0) {
|
||||||
if (!pila.pop()) {
|
if (! pila.pop()) {
|
||||||
Main.mostrarError(resourceBundle.getString("pilaVacia"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("pilaVacia"), resourceBundle);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Main.mostrarError(resourceBundle.getString("pilaVacia"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("pilaVacia"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Peek a ver si existe un elemento en la pila y mostrar el codigo en la pantalla
|
* Peek a ver si existe un elemento en la pila y mostrar el codigo en la pantalla
|
||||||
* Si existe un valor destacarlo.
|
* Si existe un valor destacarlo.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonPeek() {
|
protected void botonPeek() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
scene = contenidoPila.getScene();
|
scene = contenidoPila.getScene();
|
||||||
grafico = new Grafico(scene);
|
grafico = new Grafico(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/pila/peek")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/pila/peek")).useDelimiter("\\Z").next();
|
||||||
codigoPila.setText(codigoTexto);
|
codigoPila.setText(codigoTexto);
|
||||||
|
|
||||||
int encontrado = pila.peek();
|
int encontrado = pila.peek();
|
||||||
if (encontrado != Integer.MIN_VALUE) {
|
if (encontrado != Integer.MIN_VALUE) {
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
grafico.destacar("#caja_" + (pila.size() - 1), Grafico.RECTANGULO);
|
grafico.destacar("#caja_" + (pila.size() - 1), Grafico.RECTANGULO);
|
||||||
grafico.destacar("#texto_" + (pila.size() - 1), Grafico.TEXTO);
|
grafico.destacar("#texto_" + (pila.size() - 1), Grafico.TEXTO);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Main.mostrarError(resourceBundle.getString("pilaVacia"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("pilaVacia"), resourceBundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -46,7 +46,7 @@ public class QuickController implements Initializable {
|
|||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -112,7 +112,7 @@ public class QuickController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/quick/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/quick/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoQuick.setText(codigoTexto);
|
codigoQuick.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.quick(true)) {
|
if (! array.quick(true)) {
|
||||||
Main.mostrarError(resourceBundle.getString("quickYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("quickYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,10 +132,10 @@ public class QuickController implements Initializable {
|
|||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/quick/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/quick/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoQuick.setText(codigoTexto);
|
codigoQuick.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.quick(false)) {
|
if (! array.quick(false)) {
|
||||||
Main.mostrarError(resourceBundle.getString("quickYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("quickYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,78 +16,78 @@ import java.util.Scanner;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
public class SeleccionController implements Initializable {
|
public class SeleccionController implements Initializable {
|
||||||
/**
|
/**
|
||||||
* Donde poner el contenido de array.
|
* Donde poner el contenido de array.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private HBox contenidoSeleccion;
|
private HBox contenidoSeleccion;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde va el codigo a mostrar a la pantalla.
|
* Donde va el codigo a mostrar a la pantalla.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private Text codigoSeleccion;
|
private Text codigoSeleccion;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La escena donde está cosas graficas.
|
* La escena donde está cosas graficas.
|
||||||
*/
|
*/
|
||||||
private Scene scene;
|
private Scene scene;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde está guardado los idiomas.
|
* Donde está guardado los idiomas.
|
||||||
*/
|
*/
|
||||||
private ResourceBundle resourceBundle;
|
private ResourceBundle resourceBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El array usado en la aplicación.
|
* El array usado en la aplicación.
|
||||||
*/
|
*/
|
||||||
private Array array;
|
private Array array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("Duplicates")
|
@SuppressWarnings("Duplicates")
|
||||||
public void initialize(URL location, ResourceBundle resourceBundle) {
|
public void initialize(URL location, ResourceBundle resourceBundle) {
|
||||||
this.resourceBundle = resourceBundle;
|
this.resourceBundle = resourceBundle;
|
||||||
|
|
||||||
scene = null;
|
scene = null;
|
||||||
|
|
||||||
Colores colores = new Colores();
|
Colores colores = new Colores();
|
||||||
|
|
||||||
array = new Array(10);
|
array = new Array(10);
|
||||||
array.setOrdered(true);
|
array.setOrdered(true);
|
||||||
array.llenar();
|
array.llenar();
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
contenidoSeleccion.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
|
contenidoSeleccion.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
|
||||||
colores.siguinteColor();
|
colores.siguinteColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un array nuevo.
|
* Crear un array nuevo.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonNuevo() {
|
protected void botonNuevo() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
initializeScene();
|
initializeScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
array.nuevo();
|
array.nuevo();
|
||||||
array.llenar();
|
array.llenar();
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear el array de tamaño 10.
|
* Crear el array de tamaño 10.
|
||||||
*/
|
*/
|
||||||
private void initializeScene() {
|
private void initializeScene() {
|
||||||
scene = contenidoSeleccion.getScene();
|
scene = contenidoSeleccion.getScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Poner los valores en el grafico.
|
* Poner los valores en el grafico.
|
||||||
@ -100,42 +100,42 @@ public class SeleccionController implements Initializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ordenarlo paso por paso.
|
* Ordenarlo paso por paso.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonPaso() {
|
protected void botonPaso() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
initializeScene();
|
initializeScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/seleccion/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/seleccion/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoSeleccion.setText(codigoTexto);
|
codigoSeleccion.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.seleccion(true)) {
|
if (! array.seleccion(true)) {
|
||||||
Main.mostrarError(resourceBundle.getString("seleccionYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("seleccionYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ordenarlo completamente.
|
* Ordenarlo completamente.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonCorrer() {
|
protected void botonCorrer() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
initializeScene();
|
initializeScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/seleccion/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/seleccion/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoSeleccion.setText(codigoTexto);
|
codigoSeleccion.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.seleccion(false)) {
|
if (! array.seleccion(false)) {
|
||||||
Main.mostrarError(resourceBundle.getString("seleccionYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("seleccionYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,78 +16,78 @@ import java.util.Scanner;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
public class ShellController implements Initializable {
|
public class ShellController implements Initializable {
|
||||||
/**
|
/**
|
||||||
* Donde poner el contenido de array.
|
* Donde poner el contenido de array.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private HBox contenidoShell;
|
private HBox contenidoShell;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde va el codigo a mostrar a la pantalla.
|
* Donde va el codigo a mostrar a la pantalla.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private Text codigoShell;
|
private Text codigoShell;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La escena donde está cosas graficas.
|
* La escena donde está cosas graficas.
|
||||||
*/
|
*/
|
||||||
private Scene scene;
|
private Scene scene;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde está guardado los idiomas.
|
* Donde está guardado los idiomas.
|
||||||
*/
|
*/
|
||||||
private ResourceBundle resourceBundle;
|
private ResourceBundle resourceBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El array usado en la aplicación.
|
* El array usado en la aplicación.
|
||||||
*/
|
*/
|
||||||
private Array array;
|
private Array array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicializar todos los datos y dibujar las graficas.
|
* Inicializar todos los datos y dibujar las graficas.
|
||||||
*
|
*
|
||||||
* @param location URL: El URL de fxml en uso.
|
* @param location URL: El URL de fxml en uso.
|
||||||
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("Duplicates")
|
@SuppressWarnings("Duplicates")
|
||||||
public void initialize(URL location, ResourceBundle resourceBundle) {
|
public void initialize(URL location, ResourceBundle resourceBundle) {
|
||||||
this.resourceBundle = resourceBundle;
|
this.resourceBundle = resourceBundle;
|
||||||
|
|
||||||
scene = null;
|
scene = null;
|
||||||
|
|
||||||
Colores colores = new Colores();
|
Colores colores = new Colores();
|
||||||
|
|
||||||
array = new Array(10);
|
array = new Array(10);
|
||||||
array.setOrdered(true);
|
array.setOrdered(true);
|
||||||
array.llenar();
|
array.llenar();
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
contenidoShell.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
|
contenidoShell.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
|
||||||
colores.siguinteColor();
|
colores.siguinteColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un array nuevo.
|
* Crear un array nuevo.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonNuevo() {
|
protected void botonNuevo() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
initializeScene();
|
initializeScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
array.nuevo();
|
array.nuevo();
|
||||||
array.llenar();
|
array.llenar();
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear el array de tamaño 10.
|
* Crear el array de tamaño 10.
|
||||||
*/
|
*/
|
||||||
private void initializeScene() {
|
private void initializeScene() {
|
||||||
scene = contenidoShell.getScene();
|
scene = contenidoShell.getScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Poner los valores en el grafico.
|
* Poner los valores en el grafico.
|
||||||
@ -100,42 +100,42 @@ public class ShellController implements Initializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ordenarlo paso por paso.
|
* Ordenarlo paso por paso.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonPaso() {
|
protected void botonPaso() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
initializeScene();
|
initializeScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/shell/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/shell/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoShell.setText(codigoTexto);
|
codigoShell.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.shell(true)) {
|
if (! array.shell(true)) {
|
||||||
Main.mostrarError(resourceBundle.getString("shellYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("shellYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ordenarlo completamente.
|
* Ordenarlo completamente.
|
||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void botonCorrer() {
|
protected void botonCorrer() {
|
||||||
if (scene == null) {
|
if (scene == null) {
|
||||||
initializeScene();
|
initializeScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostrar el codigo
|
// Mostrar el codigo
|
||||||
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/shell/ordenar")).useDelimiter("\\Z").next();
|
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/shell/ordenar")).useDelimiter("\\Z").next();
|
||||||
codigoShell.setText(codigoTexto);
|
codigoShell.setText(codigoTexto);
|
||||||
|
|
||||||
if (!array.shell(false)) {
|
if (! array.shell(false)) {
|
||||||
Main.mostrarError(resourceBundle.getString("shellYaOrdenado"), resourceBundle);
|
Main.mostrarError(resourceBundle.getString("shellYaOrdenado"), resourceBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
generarGrafico();
|
generarGrafico();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,147 +19,147 @@ import java.util.List;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
public class TextFieldLimited extends TextField {
|
public class TextFieldLimited extends TextField {
|
||||||
/**
|
/**
|
||||||
* La cantidad maxima de caracters permitidas en el TextFieldLimited
|
* La cantidad maxima de caracters permitidas en el TextFieldLimited
|
||||||
*/
|
*/
|
||||||
private IntegerProperty maxLength;
|
private IntegerProperty maxLength;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Llamar a TextField.
|
* Llamar a TextField.
|
||||||
*/
|
*/
|
||||||
public TextFieldLimited() {
|
public TextFieldLimited() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lista de estilos aplicable.
|
* Lista de estilos aplicable.
|
||||||
*
|
*
|
||||||
* @return List: La lista de estilos.
|
* @return List: La lista de estilos.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData() {
|
public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData() {
|
||||||
return TextFieldLimited.StyleableProperties.STYLEABLES;
|
return TextFieldLimited.StyleableProperties.STYLEABLES;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reemplazar el texto basado en cambios de teclado, no deja ingresar mas text si length es mayor al maximo.
|
* Reemplazar el texto basado en cambios de teclado, no deja ingresar mas text si length es mayor al maximo.
|
||||||
*
|
*
|
||||||
* @param start int: Donde empece el cambio.
|
* @param start int: Donde empece el cambio.
|
||||||
* @param end int: Donde termina.
|
* @param end int: Donde termina.
|
||||||
* @param text String: Texto a cambiar.
|
* @param text String: Texto a cambiar.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void replaceText(int start, int end, String text) {
|
public void replaceText(int start, int end, String text) {
|
||||||
if (getMaxLength() != 0) {
|
if (getMaxLength() != 0) {
|
||||||
if (text.equals("")) {
|
if (text.equals("")) {
|
||||||
super.replaceText(start, end, text);
|
super.replaceText(start, end, text);
|
||||||
}
|
}
|
||||||
else if (getText().length() < getMaxLength()) {
|
else if (getText().length() < getMaxLength()) {
|
||||||
super.replaceText(start, end, text);
|
super.replaceText(start, end, text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
super.replaceText(start, end, text);
|
super.replaceText(start, end, text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reemplazar un selección de texto.
|
* Reemplazar un selección de texto.
|
||||||
*
|
*
|
||||||
* @param text String: El texto a reemplazar.
|
* @param text String: El texto a reemplazar.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void replaceSelection(String text) {
|
public void replaceSelection(String text) {
|
||||||
if (getMaxLength() != 0) {
|
if (getMaxLength() != 0) {
|
||||||
if (text.equals("")) {
|
if (text.equals("")) {
|
||||||
super.replaceSelection(text);
|
super.replaceSelection(text);
|
||||||
}
|
}
|
||||||
else if (getText().length() < getMaxLength()) {
|
else if (getText().length() < getMaxLength()) {
|
||||||
if (text.length() > getMaxLength() - getText().length()) {
|
if (text.length() > getMaxLength() - getText().length()) {
|
||||||
text = text.substring(0, getMaxLength() - getText().length());
|
text = text.substring(0, getMaxLength() - getText().length());
|
||||||
}
|
}
|
||||||
super.replaceSelection(text);
|
super.replaceSelection(text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
super.replaceSelection(text);
|
super.replaceSelection(text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la cantidad maxima si está asignado.
|
* Devolver la cantidad maxima si está asignado.
|
||||||
*
|
*
|
||||||
* @return int: Cantidad de caracters.
|
* @return int: Cantidad de caracters.
|
||||||
*/
|
*/
|
||||||
public final int getMaxLength() {
|
public final int getMaxLength() {
|
||||||
return maxLength == null ? 0 : maxLength.get();
|
return maxLength == null ? 0 : maxLength.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asignar un valor maximo de caracters permitidio en el TextFieldLimited.
|
* Asignar un valor maximo de caracters permitidio en el TextFieldLimited.
|
||||||
*
|
*
|
||||||
* @param value int: La cantidad maxima.
|
* @param value int: La cantidad maxima.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public final void setMaxLength(int value) {
|
public final void setMaxLength(int value) {
|
||||||
if (maxLength != null || value > 0) {
|
if (maxLength != null || value > 0) {
|
||||||
maxLengthProperty().set(value);
|
maxLengthProperty().set(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JavaFX FXML field property por tamaño maximo
|
* JavaFX FXML field property por tamaño maximo
|
||||||
*
|
*
|
||||||
* @return IntegerProperty: Property.
|
* @return IntegerProperty: Property.
|
||||||
*/
|
*/
|
||||||
public final IntegerProperty maxLengthProperty() {
|
public final IntegerProperty maxLengthProperty() {
|
||||||
if (maxLength == null) {
|
if (maxLength == null) {
|
||||||
maxLength = new StyleableIntegerProperty() {
|
maxLength = new StyleableIntegerProperty() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CssMetaData<TextFieldLimited, Number> getCssMetaData() {
|
public CssMetaData<TextFieldLimited, Number> getCssMetaData() {
|
||||||
return TextFieldLimited.StyleableProperties.MAX_LENGTH;
|
return TextFieldLimited.StyleableProperties.MAX_LENGTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getBean() {
|
public Object getBean() {
|
||||||
return TextFieldLimited.this;
|
return TextFieldLimited.this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "maxLength";
|
return "maxLength";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return maxLength;
|
return maxLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CSS por FXML con un maximo tamaño
|
* CSS por FXML con un maximo tamaño
|
||||||
*/
|
*/
|
||||||
private static class StyleableProperties {
|
private static class StyleableProperties {
|
||||||
private static final CssMetaData<TextFieldLimited, Number> MAX_LENGTH =
|
private static final CssMetaData<TextFieldLimited, Number> MAX_LENGTH =
|
||||||
new CssMetaData<TextFieldLimited, Number>("-fx-max-length", SizeConverter.getInstance(), 0) {
|
new CssMetaData<TextFieldLimited, Number>("-fx-max-length", SizeConverter.getInstance(), 0) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isSettable(TextFieldLimited node) {
|
public boolean isSettable(TextFieldLimited node) {
|
||||||
return node.maxLength == null || !node.maxLength.isBound();
|
return node.maxLength == null || ! node.maxLength.isBound();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public StyleableProperty<Number> getStyleableProperty(TextFieldLimited node) {
|
public StyleableProperty<Number> getStyleableProperty(TextFieldLimited node) {
|
||||||
return (StyleableProperty<Number>) node.maxLengthProperty();
|
return (StyleableProperty<Number>) node.maxLengthProperty();
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final List<CssMetaData<? extends Styleable, ?>> STYLEABLES;
|
private static final List<CssMetaData<? extends Styleable, ?>> STYLEABLES;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
final List<CssMetaData<? extends Styleable, ?>> styleables = new ArrayList<>(Shape.getClassCssMetaData());
|
final List<CssMetaData<? extends Styleable, ?>> styleables = new ArrayList<>(Shape.getClassCssMetaData());
|
||||||
styleables.add(MAX_LENGTH);
|
styleables.add(MAX_LENGTH);
|
||||||
STYLEABLES = Collections.unmodifiableList(styleables);
|
STYLEABLES = Collections.unmodifiableList(styleables);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
public int buscar(int valor) {
|
public int buscar(int valor) {
|
||||||
for (int i = 0; i < array.length; i++) {
|
for (int i = 0; i < array.length; i++) {
|
||||||
if (array[i] != 0 && array[i] == valor) {
|
if (array[i] != 0 && array[i] == valor) {
|
||||||
// Se encontró
|
// Se encontró
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// No se encontró
|
// No se encontró
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
@ -1,18 +1,18 @@
|
|||||||
public boolean eliminar(int valor) {
|
public boolean eliminar(int valor) {
|
||||||
boolean borrado = false;
|
boolean borrado = false;
|
||||||
for (int i = 0; i < array.length; i++) {
|
for (int i = 0; i < array.length; i++) {
|
||||||
if (array[i] != 0 && array[i] == valor) {
|
if (array[i] != 0 && array[i] == valor) {
|
||||||
// Eliminar el valor
|
// Eliminar el valor
|
||||||
array[i] = 0;
|
array[i] = 0;
|
||||||
borrado=true;
|
borrado=true;
|
||||||
for (int j = i; j < array.length; j++) {
|
for (int j = i; j < array.length; j++) {
|
||||||
if (j != array.length - 1) {
|
if (j != array.length - 1) {
|
||||||
// Correr la array hacia arriba
|
// Correr la array hacia arriba
|
||||||
array[j] = array[j + 1];
|
array[j] = array[j + 1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
array[array.length-1] = 0;
|
array[array.length-1] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return borrado;
|
return borrado;
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
public boolean insertar(int valor) {
|
public boolean insertar(int valor) {
|
||||||
for (int i = 0; i < array.length; i++) {
|
for (int i = 0; i < array.length; i++) {
|
||||||
if (array[i] == 0) {
|
if (array[i] == 0) {
|
||||||
array[i] = valor;
|
array[i] = valor;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (array[i] == valor) {
|
else if (array[i] == valor) {
|
||||||
// Ya existe el valor en el array
|
// Ya existe el valor en el array
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
@ -1,10 +1,10 @@
|
|||||||
public int buscar(int valor) {
|
public int buscar(int valor) {
|
||||||
for (int i = 0; i < array.length; i++) {
|
for (int i = 0; i < array.length; i++) {
|
||||||
if (array[i] != 0 && array[i] == valor) {
|
if (array[i] != 0 && array[i] == valor) {
|
||||||
// Se encontró
|
// Se encontró
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// No se encontró
|
// No se encontró
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
@ -1,12 +1,12 @@
|
|||||||
public boolean eliminar(int valor) {
|
public boolean eliminar(int valor) {
|
||||||
boolean borrado = false;
|
boolean borrado = false;
|
||||||
for (int i = 0; i < array.length; i++) {
|
for (int i = 0; i < array.length; i++) {
|
||||||
if (array[i] != 0 && array[i] == valor) {
|
if (array[i] != 0 && array[i] == valor) {
|
||||||
// Eliminar el valor
|
// Eliminar el valor
|
||||||
array[i] = 0;
|
array[i] = 0;
|
||||||
borrado=true;
|
borrado=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return borrado;
|
return borrado;
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
public boolean insertar(int valor) {
|
public boolean insertar(int valor) {
|
||||||
for (int i = 0; i < array.length; i++) {
|
for (int i = 0; i < array.length; i++) {
|
||||||
if (array[i] == 0) {
|
if (array[i] == 0) {
|
||||||
array[i] = valor;
|
array[i] = valor;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (array[i] == valor) {
|
else if (array[i] == valor) {
|
||||||
// Ya existe el valor en el array
|
// Ya existe el valor en el array
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
public void burbuja() {
|
public void burbuja() {
|
||||||
for (int i = elementos - 1; i > 1; i--) {
|
for (int i = elementos - 1; i > 1; i--) {
|
||||||
for(j = 0; in < i; j++) {
|
for(j = 0; in < i; j++) {
|
||||||
// Si están fuera del orden
|
// Si están fuera del orden
|
||||||
if (array[j] > array[j+1]) {
|
if (array[j] > array[j+1]) {
|
||||||
// Intercambiar valores
|
// Intercambiar valores
|
||||||
int temp = array[j];
|
int temp = array[j];
|
||||||
array[j] = array[j+1];
|
array[j] = array[j+1];
|
||||||
array[j+1] = temp;
|
array[j+1] = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
public int peek() {
|
public int peek() {
|
||||||
// Devolver el valor en el primer indice
|
// Devolver el valor en el primer indice
|
||||||
return this.pila[primer];
|
return this.pila[primer];
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
public void pop() {
|
public void pop() {
|
||||||
// Borrar el valor que está al prinicipio.
|
// Borrar el valor que está al prinicipio.
|
||||||
this.pila[primer] = 0;
|
this.pila[primer] = 0;
|
||||||
// Cambiar el primer nivel de la cola.
|
// Cambiar el primer nivel de la cola.
|
||||||
primer++;
|
primer++;
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
public void push(int valor) {
|
public void push(int valor) {
|
||||||
// Sumar el final.
|
// Sumar el final.
|
||||||
final++;
|
final++;
|
||||||
// Insertar el valor
|
// Insertar el valor
|
||||||
this.pila[final] = valor;
|
this.pila[final] = valor;
|
||||||
}
|
}
|
@ -1,14 +1,14 @@
|
|||||||
public void insercion() {
|
public void insercion() {
|
||||||
for (int i = 1; i < elementos; i++) {
|
for (int i = 1; i < elementos; i++) {
|
||||||
// Guardar el elemento en un variable temporario.
|
// Guardar el elemento en un variable temporario.
|
||||||
int temp = array[i];
|
int temp = array[i];
|
||||||
int j = i;
|
int j = i;
|
||||||
// Mover los valores hasta que hay una mas pequeño.
|
// Mover los valores hasta que hay una mas pequeño.
|
||||||
while (j > 0 && array[j-1] >= temp) {
|
while (j > 0 && array[j-1] >= temp) {
|
||||||
array[j] = array[j-1];
|
array[j] = array[j-1];
|
||||||
--j;
|
--j;
|
||||||
}
|
}
|
||||||
// Poner el valor temporario despues de los valores mas pequeños.
|
// Poner el valor temporario despues de los valores mas pequeños.
|
||||||
array[j] = temp;
|
array[j] = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,47 +1,47 @@
|
|||||||
public Enlace buscar(int llave) {
|
public Enlace buscar(int llave) {
|
||||||
if (this.primer != null) {
|
if (this.primer != null) {
|
||||||
// La lista no es vacia
|
// La lista no es vacia
|
||||||
Enlace lista = this.primer;
|
Enlace lista = this.primer;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (lista.getLlave() != llave && i < elementos) {
|
while (lista.getLlave() != llave && i < elementos) {
|
||||||
// Buscar hasta la llave es encontrado
|
// Buscar hasta la llave es encontrado
|
||||||
lista = lista.getSiguente();
|
lista = lista.getSiguente();
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lista.getLlave() == llave) {
|
if (lista.getLlave() == llave) {
|
||||||
// Devoler el enlace encontrado.
|
// Devoler el enlace encontrado.
|
||||||
return lista;
|
return lista;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// No se encontró.
|
// No se encontró.
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// La lista es vacia, devolver null
|
// La lista es vacia, devolver null
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,57 +1,57 @@
|
|||||||
public void eliminar(int llave) {
|
public void eliminar(int llave) {
|
||||||
if (primer != null) {
|
if (primer != null) {
|
||||||
// Crear una lista temporario para trabajar
|
// Crear una lista temporario para trabajar
|
||||||
Enlace lista = this.primer;
|
Enlace lista = this.primer;
|
||||||
// Guardar el enlace previo
|
// Guardar el enlace previo
|
||||||
Enlace previo = lista;
|
Enlace previo = lista;
|
||||||
// Solo busca mientras que i es menor que la cantidad de enlaces
|
// Solo busca mientras que i es menor que la cantidad de enlaces
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (lista.getLlave() != llave && i < elementos) {
|
while (lista.getLlave() != llave && i < elementos) {
|
||||||
// Buscar hasta la llave es encontraddo
|
// Buscar hasta la llave es encontraddo
|
||||||
if (lista.getSiguente() != null) {
|
if (lista.getSiguente() != null) {
|
||||||
// Buscar en el sigenute enlace
|
// Buscar en el sigenute enlace
|
||||||
previo = lista;
|
previo = lista;
|
||||||
lista = lista.getSiguente();
|
lista = lista.getSiguente();
|
||||||
}
|
}
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lista.getLlave != llave) {
|
if (lista.getLlave != llave) {
|
||||||
// No se encontró
|
// No se encontró
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Se encontró
|
// Se encontró
|
||||||
if (lista == this.lista) {
|
if (lista == this.lista) {
|
||||||
// Si es el primer enlace, cambiarlo al siguente enlace
|
// Si es el primer enlace, cambiarlo al siguente enlace
|
||||||
this.lista = this.lista.getSiguente();
|
this.lista = this.lista.getSiguente();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Sino cortar este enlace de la lista
|
// Sino cortar este enlace de la lista
|
||||||
previo.setSiguente(lista.getSiguente());
|
previo.setSiguente(lista.getSiguente());
|
||||||
}
|
}
|
||||||
elementos--;
|
elementos--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,39 +1,39 @@
|
|||||||
public void insertar(int llave) {
|
public void insertar(int llave) {
|
||||||
if (buscar(llave) == null) {
|
if (buscar(llave) == null) {
|
||||||
// Crear un enlace nuevo
|
// Crear un enlace nuevo
|
||||||
Enlace nuevo = new Enlace(primer, llave);
|
Enlace nuevo = new Enlace(primer, llave);
|
||||||
|
|
||||||
if (primer == null) {
|
if (primer == null) {
|
||||||
// Si el primer enlace es null, el ul
|
// Si el primer enlace es null, el ul
|
||||||
ultimo = nuevo;
|
ultimo = nuevo;
|
||||||
}
|
}
|
||||||
|
|
||||||
// El primer es el nuevo.
|
// El primer es el nuevo.
|
||||||
primer = nuevo;
|
primer = nuevo;
|
||||||
// El ultimo apunta al primer.
|
// El ultimo apunta al primer.
|
||||||
ultimo.setSiguente(primer);
|
ultimo.setSiguente(primer);
|
||||||
elementos++;
|
elementos++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,54 +1,54 @@
|
|||||||
public Enlace buscar(int llave) {
|
public Enlace buscar(int llave) {
|
||||||
if (this.lista != null) {
|
if (this.lista != null) {
|
||||||
// La lista no es vacia
|
// La lista no es vacia
|
||||||
Enlace lista = this.lista;
|
Enlace lista = this.lista;
|
||||||
while (lista.getLlave() != llave) {
|
while (lista.getLlave() != llave) {
|
||||||
// Buscar hasta la llave es encontraddo
|
// Buscar hasta la llave es encontraddo
|
||||||
if (lista.getSiguente() != null) {
|
if (lista.getSiguente() != null) {
|
||||||
// Buscar en el sigenute enlace
|
// Buscar en el sigenute enlace
|
||||||
lista = lista.getSiguente();
|
lista = lista.getSiguente();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// No se encuentra
|
// No se encuentra
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Se encontró, devolver el enlace
|
// Se encontró, devolver el enlace
|
||||||
return lista;
|
return lista;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// La lista es vacia, devolver null
|
// La lista es vacia, devolver null
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
private Enlace previo;
|
private Enlace previo;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getPrevio() {
|
public Enlace getPrevio() {
|
||||||
return previo;
|
return previo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPrevio(Enlace previo) {
|
public void setPrevio(Enlace previo) {
|
||||||
this.previo = previo;
|
this.previo = previo;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,63 +1,63 @@
|
|||||||
public void eliminar(int llave) {
|
public void eliminar(int llave) {
|
||||||
if (lista != null) {
|
if (lista != null) {
|
||||||
// Crear una lista temporario para trabajar
|
// Crear una lista temporario para trabajar
|
||||||
Enlace lista = this.lista;
|
Enlace lista = this.lista;
|
||||||
// Guardar el enlace previo
|
// Guardar el enlace previo
|
||||||
Enlace previo = lista;
|
Enlace previo = lista;
|
||||||
while (lista.getLlave() != llave) {
|
while (lista.getLlave() != llave) {
|
||||||
// Buscar hasta la llave es encontraddo
|
// Buscar hasta la llave es encontraddo
|
||||||
if (lista.getSiguente() != null) {
|
if (lista.getSiguente() != null) {
|
||||||
// Buscar en el sigenute enlace
|
// Buscar en el sigenute enlace
|
||||||
previo = lista;
|
previo = lista;
|
||||||
lista = lista.getSiguente();
|
lista = lista.getSiguente();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// No se encuentra la llave
|
// No se encuentra la llave
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Se encontró
|
// Se encontró
|
||||||
if (lista == this.lista) {
|
if (lista == this.lista) {
|
||||||
// Si es el primer enlace, cambiarlo al siguente enlace
|
// Si es el primer enlace, cambiarlo al siguente enlace
|
||||||
this.lista = this.lista.getSiguente();
|
this.lista = this.lista.getSiguente();
|
||||||
if (this.lista.getPrevio() != null) {
|
if (this.lista.getPrevio() != null) {
|
||||||
this.lista.setPrevio(null);
|
this.lista.setPrevio(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Sino cortar este enlace de la lista
|
// Sino cortar este enlace de la lista
|
||||||
previo.setSiguente(lista.getSiguente());
|
previo.setSiguente(lista.getSiguente());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
private Enlace previo;
|
private Enlace previo;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getPrevio() {
|
public Enlace getPrevio() {
|
||||||
return previo;
|
return previo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPrevio(Enlace previo) {
|
public void setPrevio(Enlace previo) {
|
||||||
this.previo = previo;
|
this.previo = previo;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,43 +1,43 @@
|
|||||||
public void insertar(int llave) {
|
public void insertar(int llave) {
|
||||||
if (buscar(llave) == null) {
|
if (buscar(llave) == null) {
|
||||||
// Crear un enlace nuevo
|
// Crear un enlace nuevo
|
||||||
Enlace nuevo = new Enlace(lista, llave);
|
Enlace nuevo = new Enlace(lista, llave);
|
||||||
if (lista != null) {
|
if (lista != null) {
|
||||||
// El previo es el nuevo.
|
// El previo es el nuevo.
|
||||||
lista.setPrevio(nuevo);
|
lista.setPrevio(nuevo);
|
||||||
}
|
}
|
||||||
// Agregar el enlace a la lista
|
// Agregar el enlace a la lista
|
||||||
lista = nuevo;
|
lista = nuevo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
private Enlace previo;
|
private Enlace previo;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getPrevio() {
|
public Enlace getPrevio() {
|
||||||
return previo;
|
return previo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPrevio(Enlace previo) {
|
public void setPrevio(Enlace previo) {
|
||||||
this.previo = previo;
|
this.previo = previo;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,45 +1,45 @@
|
|||||||
public Enlace buscar(int llave) {
|
public Enlace buscar(int llave) {
|
||||||
if (this.lista != null) {
|
if (this.lista != null) {
|
||||||
// La lista no es vacia
|
// La lista no es vacia
|
||||||
Enlace lista = this.lista;
|
Enlace lista = this.lista;
|
||||||
while (lista.getLlave() != llave) {
|
while (lista.getLlave() != llave) {
|
||||||
// Buscar hasta la llave es encontraddo
|
// Buscar hasta la llave es encontraddo
|
||||||
if (lista.getSiguente() != null) {
|
if (lista.getSiguente() != null) {
|
||||||
// Buscar en el sigenute enlace
|
// Buscar en el sigenute enlace
|
||||||
lista = lista.getSiguente();
|
lista = lista.getSiguente();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// No se encuentra
|
// No se encuentra
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Se encontró, devolver el enlace
|
// Se encontró, devolver el enlace
|
||||||
return lista;
|
return lista;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// La lista es vacia, devolver null
|
// La lista es vacia, devolver null
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,51 +1,51 @@
|
|||||||
public void eliminar(int llave) {
|
public void eliminar(int llave) {
|
||||||
if (lista != null) {
|
if (lista != null) {
|
||||||
// Crear una lista temporario para trabajar
|
// Crear una lista temporario para trabajar
|
||||||
Enlace lista = this.lista;
|
Enlace lista = this.lista;
|
||||||
// Guardar el enlace previo
|
// Guardar el enlace previo
|
||||||
Enlace previo = lista;
|
Enlace previo = lista;
|
||||||
while (lista.getLlave() != llave) {
|
while (lista.getLlave() != llave) {
|
||||||
// Buscar hasta la llave es encontraddo
|
// Buscar hasta la llave es encontraddo
|
||||||
if (lista.getSiguente() != null) {
|
if (lista.getSiguente() != null) {
|
||||||
// Buscar en el sigenute enlace
|
// Buscar en el sigenute enlace
|
||||||
previo = lista;
|
previo = lista;
|
||||||
lista = lista.getSiguente();
|
lista = lista.getSiguente();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// No se encuentra la llave
|
// No se encuentra la llave
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Se encontró
|
// Se encontró
|
||||||
if (lista == this.lista) {
|
if (lista == this.lista) {
|
||||||
// Si es el primer enlace, cambiarlo al siguente enlace
|
// Si es el primer enlace, cambiarlo al siguente enlace
|
||||||
this.lista = this.lista.getSiguente();
|
this.lista = this.lista.getSiguente();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Sino cortar este enlace de la lista
|
// Sino cortar este enlace de la lista
|
||||||
previo.setSiguente(lista.getSiguente());
|
previo.setSiguente(lista.getSiguente());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,30 +1,30 @@
|
|||||||
public void insertar(int llave) {
|
public void insertar(int llave) {
|
||||||
if (buscar(llave) == null) {
|
if (buscar(llave) == null) {
|
||||||
// Crear un enlace nuevo
|
// Crear un enlace nuevo
|
||||||
Enlace nuevo = new Enlace(lista, llave);
|
Enlace nuevo = new Enlace(lista, llave);
|
||||||
// Agregar el enlace a la lista
|
// Agregar el enlace a la lista
|
||||||
lista = nuevo;
|
lista = nuevo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final public class Enlace {
|
final public class Enlace {
|
||||||
private int llave;
|
private int llave;
|
||||||
private Enlace siguente;
|
private Enlace siguente;
|
||||||
|
|
||||||
public Enlace(Enlace siguiente, int llave) {
|
public Enlace(Enlace siguiente, int llave) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
this.llave = llave;
|
this.llave = llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLlave() {
|
public int getLlave() {
|
||||||
return llave;
|
return llave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Enlace getSiguente() {
|
public Enlace getSiguente() {
|
||||||
return siguente;
|
return siguente;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSiguente(Enlace siguente) {
|
public void setSiguente(Enlace siguente) {
|
||||||
this.siguente = siguente;
|
this.siguente = siguente;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,50 +1,50 @@
|
|||||||
public void merge() {
|
public void merge() {
|
||||||
// Crear un array temporario para trabajar.
|
// Crear un array temporario para trabajar.
|
||||||
int[] temp = new int[elementos];
|
int[] temp = new int[elementos];
|
||||||
// Llamar al metodo recursivo.
|
// Llamar al metodo recursivo.
|
||||||
recMergeSort(temp, 0, elementos - 1);
|
recMergeSort(temp, 0, elementos - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void recMergeSort(int[] temp, int izquerda, int derecha) {
|
private void recMergeSort(int[] temp, int izquerda, int derecha) {
|
||||||
if (izquerda != derecha) {
|
if (izquerda != derecha) {
|
||||||
int medio = (izquerda + derecha) / 2;
|
int medio = (izquerda + derecha) / 2;
|
||||||
// Trabajar con los valores en el lado izquerdo.
|
// Trabajar con los valores en el lado izquerdo.
|
||||||
recMergeSort(temp, izquerda, medio);
|
recMergeSort(temp, izquerda, medio);
|
||||||
// Trabajar con los valores en el lado derecha.
|
// Trabajar con los valores en el lado derecha.
|
||||||
recMergeSort(temp, medio + 1, derecha);
|
recMergeSort(temp, medio + 1, derecha);
|
||||||
// Unir los valores.
|
// Unir los valores.
|
||||||
merge(temp, izquerda, medio + 1, derecha);
|
merge(temp, izquerda, medio + 1, derecha);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void merge(int[] temp, int prevIzquerda, int prevMedio, int derecha) {
|
private void merge(int[] temp, int prevIzquerda, int prevMedio, int derecha) {
|
||||||
int j = 0;
|
int j = 0;
|
||||||
int izquerda = prevIzquerda;
|
int izquerda = prevIzquerda;
|
||||||
int medio = prevMedio - 1;
|
int medio = prevMedio - 1;
|
||||||
int masDerecha = derecha - izquerda + 1;
|
int masDerecha = derecha - izquerda + 1;
|
||||||
|
|
||||||
while (prevIzquerda <= medio && prevMedio <= derecha) {
|
while (prevIzquerda <= medio && prevMedio <= derecha) {
|
||||||
// Poner un valor en el array temporario.
|
// Poner un valor en el array temporario.
|
||||||
if (array[prevIzquerda] < array[prevMedio]) {
|
if (array[prevIzquerda] < array[prevMedio]) {
|
||||||
temp[j++] = array[prevIzquerda++];
|
temp[j++] = array[prevIzquerda++];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
temp[j++] = array[prevMedio++];
|
temp[j++] = array[prevMedio++];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (prevIzquerda <= medio) {
|
while (prevIzquerda <= medio) {
|
||||||
// Mientras que el valor previos de izquerda es menor que el medio correr los valores.
|
// Mientras que el valor previos de izquerda es menor que el medio correr los valores.
|
||||||
temp[j++] = array[prevIzquerda++];
|
temp[j++] = array[prevIzquerda++];
|
||||||
}
|
}
|
||||||
|
|
||||||
while (prevMedio <= derecha) {
|
while (prevMedio <= derecha) {
|
||||||
// Mientras que el valor previos de derecha es menor que el medio correr los valores.
|
// Mientras que el valor previos de derecha es menor que el medio correr los valores.
|
||||||
temp[j++] = array[prevMedio++];
|
temp[j++] = array[prevMedio++];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < masDerecha; j++) {
|
for (j = 0; j < masDerecha; j++) {
|
||||||
// Copiar los valores al array real.
|
// Copiar los valores al array real.
|
||||||
array[izquerda + j] = temp[j];
|
array[izquerda + j] = temp[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
public int peek() {
|
public int peek() {
|
||||||
// Devolver el valor encima
|
// Devolver el valor encima
|
||||||
return this.pila[encima];
|
return this.pila[encima];
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
public void pop() {
|
public void pop() {
|
||||||
// Borrar el valor que está encima.
|
// Borrar el valor que está encima.
|
||||||
this.pila[encima] = 0;
|
this.pila[encima] = 0;
|
||||||
// Restar el nivel de la pila.
|
// Restar el nivel de la pila.
|
||||||
encima--;
|
encima--;
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
public void push(int valor) {
|
public void push(int valor) {
|
||||||
// Sumar el nivel de la pila
|
// Sumar el nivel de la pila
|
||||||
encima++;
|
encima++;
|
||||||
// Insertar el valor
|
// Insertar el valor
|
||||||
this.pila[encima] = valor;
|
this.pila[encima] = valor;
|
||||||
}
|
}
|
@ -1,47 +1,47 @@
|
|||||||
public void quick() {
|
public void quick() {
|
||||||
// Llamar al metodo recursivo.
|
// Llamar al metodo recursivo.
|
||||||
recurenciaQuick(0, elementos - 1);
|
recurenciaQuick(0, elementos - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void recurenciaQuick(int izquerda, int derecha) {
|
private void recurenciaQuick(int izquerda, int derecha) {
|
||||||
if (derecha - izquerda <= 0) {
|
if (derecha - izquerda <= 0) {
|
||||||
// Si derecha es menor que izquerda ya terminó.
|
// Si derecha es menor que izquerda ya terminó.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int pivot = array[derecha];
|
int pivot = array[derecha];
|
||||||
|
|
||||||
int particion = particionar(izquerda, derecha, pivot);
|
int particion = particionar(izquerda, derecha, pivot);
|
||||||
recurenciaQuick(izquerda, particion - 1);
|
recurenciaQuick(izquerda, particion - 1);
|
||||||
recurenciaQuick(particion + 1, derecha);
|
recurenciaQuick(particion + 1, derecha);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int particionar(int izquerda, int derecha, int pivot) {
|
private int particionar(int izquerda, int derecha, int pivot) {
|
||||||
int punteroIzquerda = izquerda-1;
|
int punteroIzquerda = izquerda-1;
|
||||||
int punteroDerecha = derecha;
|
int punteroDerecha = derecha;
|
||||||
while (true) {
|
while (true) {
|
||||||
// Sumar el punteroIzquerda hasta que es igual al pivot
|
// Sumar el punteroIzquerda hasta que es igual al pivot
|
||||||
while (array[++punteroIzquerda] < pivot);
|
while (array[++punteroIzquerda] < pivot);
|
||||||
// Restar el puntoDerecha hasta que es igual a pivot o hasta 0.
|
// Restar el puntoDerecha hasta que es igual a pivot o hasta 0.
|
||||||
while (punteroDerecha > 0 && array[--punteroDerecha] > pivot);
|
while (punteroDerecha > 0 && array[--punteroDerecha] > pivot);
|
||||||
|
|
||||||
if (punteroIzquerda >= punteroDerecha) {
|
if (punteroIzquerda >= punteroDerecha) {
|
||||||
// Si el puntero izquerda es mayor o igual a la derech termina el while.
|
// Si el puntero izquerda es mayor o igual a la derech termina el while.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Intercambiar los valores.
|
// Intercambiar los valores.
|
||||||
int temp = array[punteroIzquerda];
|
int temp = array[punteroIzquerda];
|
||||||
array[punteroIzquerda] = array[punteroDerecha];
|
array[punteroIzquerda] = array[punteroDerecha];
|
||||||
array[punteroDerecha] = temp;
|
array[punteroDerecha] = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Intercambiar los valores.
|
// Intercambiar los valores.
|
||||||
int temp = array[punteroIzquerda];
|
int temp = array[punteroIzquerda];
|
||||||
array[punteroIzquerda] = array[derecha];
|
array[punteroIzquerda] = array[derecha];
|
||||||
array[derecha] = temp;
|
array[derecha] = temp;
|
||||||
|
|
||||||
// Devolver la posición donde terminó.
|
// Devolver la posición donde terminó.
|
||||||
return punteroIzquerda;
|
return punteroIzquerda;
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
public void seleccion() {
|
public void seleccion() {
|
||||||
for (int i = 0; i < elementos - 1; i++) {
|
for (int i = 0; i < elementos - 1; i++) {
|
||||||
int minimo = i;
|
int minimo = i;
|
||||||
for (int j = i + 1; j < elementos; j++) {
|
for (int j = i + 1; j < elementos; j++) {
|
||||||
if (array[j] < array[minimo]) {
|
if (array[j] < array[minimo]) {
|
||||||
minimo = j;
|
minimo = j;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int temp = array[i];
|
int temp = array[i];
|
||||||
array[i] = array[minimo];
|
array[i] = array[minimo];
|
||||||
array[minimo] = temp;
|
array[minimo] = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,25 +1,25 @@
|
|||||||
public void shell() {
|
public void shell() {
|
||||||
int i, j;
|
int i, j;
|
||||||
int temp;
|
int temp;
|
||||||
|
|
||||||
int h = 1;
|
int h = 1;
|
||||||
while (h <= elementos / 3) {
|
while (h <= elementos / 3) {
|
||||||
// Sumatorio de (h * 3 + 1)
|
// Sumatorio de (h * 3 + 1)
|
||||||
h = h * 3 + 1;
|
h = h * 3 + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mientras que h es mayor que 0.
|
// Mientras que h es mayor que 0.
|
||||||
while (h > 0) {
|
while (h > 0) {
|
||||||
for (i = h; i < elementos; i++) {
|
for (i = h; i < elementos; i++) {
|
||||||
temp = array[i];
|
temp = array[i];
|
||||||
j = i;
|
j = i;
|
||||||
while (j > h-1 && array[j-h] >= temp) {
|
while (j > h-1 && array[j-h] >= temp) {
|
||||||
// Ordenar dento el "shell"
|
// Ordenar dento el "shell"
|
||||||
array[j] = array[j-h];
|
array[j] = array[j-h];
|
||||||
j -= h;
|
j -= h;
|
||||||
}
|
}
|
||||||
array[j] = temp;
|
array[j] = temp;
|
||||||
}
|
}
|
||||||
h = (h-1) / 3;
|
h = (h-1) / 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user