Added double and circular linked list.

Updated documentation.
Seperated links into 2 types, normal and circular.
Added arrow graphics.
This commit is contained in:
Chris Cromer
2016-06-26 13:03:04 -04:00
parent 2f4c70ad4c
commit 5dff73e43a
100 changed files with 7313 additions and 542 deletions

View File

@@ -0,0 +1,42 @@
package cl.cromer.estructuras;
/**
* Esta interfaz es para los 2 tipos de enlace, {@link EnlaceNormal} y {@link EnlaceCircular}.
*/
interface Enlace {
/**
* Devolver la llave.
* @return int: La llave.
*/
int getLlave();
/**
* Cambiar el valor de la llave.
* @param llave int: El valor de la llave.
*/
void setLlave(int llave);
/**
* Devolver el siguente enlace.
* @return Object: El enlace a devolver.
*/
Object getSiguente();
/**
* Cambiar el siguiente enlace.
* @param siguente Object: El siguente enlace nuevo.
*/
void setSiguente(Object siguente);
/**
* Devolver el enlace previo.
* @return Object: El enlace previo.
*/
Object getPrevio();
/**
* Cambiar el previo enlace.
* @param previo Object: El enlace previo nuevo.
*/
void setPrevio(Object previo);
}

View File

@@ -0,0 +1,70 @@
package cl.cromer.estructuras;
/**
* Esta clase es de tipo de enlace circular.
*/
public class EnlaceCircular implements Enlace {
/**
* La llave.
*/
private int llave;
/**
* El siguente enlace.
*/
private EnlaceCircular siguente;
/**
* Incializar.
*/
public EnlaceCircular() {
siguente = null;
}
/**
* Devolver la llave.
* @return int: La llave.
*/
public int getLlave() {
return llave;
}
/**
* Cambiar el valor de la llave.
* @param llave int: El valor de la llave.
*/
public void setLlave(int llave) {
this.llave = llave;
}
/**
* Devolver el siguente enlace.
* @return EnlaceCircular: El enlace a devolver.
*/
public EnlaceCircular getSiguente() {
return siguente;
}
/**
* Cambiar el siguiente enlace.
* @param siguente Object: El siguente enlace nuevo de tipo {@link EnlaceCircular}.
*/
public void setSiguente(Object siguente) {
this.siguente = (EnlaceCircular) siguente;
}
/**
* Devolver el enlace previo.
* @return EnlaceCircular: El enlace previo.
*/
public EnlaceCircular getPrevio() {
return null;
}
/**
* Dummy metodo para usar interface {@link Enlace}
* @param previo Object: El enlace previo nuevo de tipo {@link EnlaceCircular}.
*/
public void setPrevio(Object previo) {
}
}

View File

@@ -0,0 +1,77 @@
package cl.cromer.estructuras;
/**
* Esta clase es de tipo de enlace normal.
*/
public class EnlaceNormal implements Enlace {
/**
* La llave.
*/
private int llave;
/**
* El siguente enlace.
*/
private EnlaceNormal siguente;
/**
* El enlace previo por doble enlazada.
*/
private EnlaceNormal previo;
/**
* Incializar.
*/
public EnlaceNormal() {
siguente = null;
previo = null;
}
/**
* Devolver la llave.
* @return int: La llave.
*/
public int getLlave() {
return llave;
}
/**
* Cambiar el valor de la llave.
* @param llave int: El valor de la llave.
*/
public void setLlave(int llave) {
this.llave = llave;
}
/**
* Devolver el siguente enlace.
* @return EnlaceNormal: El enlace a devolver.
*/
public EnlaceNormal getSiguente() {
return siguente;
}
/**
* Cambiar el siguiente enlace.
* @param siguente Object: El siguente enlace nuevo de tipo {@link EnlaceNormal}.
*/
public void setSiguente(Object siguente) {
this.siguente = (EnlaceNormal) siguente;
}
/**
* Devolver el enlace previo.
* @return EnlaceNormal: El enlace previo.
*/
public EnlaceNormal getPrevio() {
return previo;
}
/**
* Cambiar el previo enlace.
* @param previo Object: El enlace previo nuevo de tipo {@link EnlaceNormal}.
*/
public void setPrevio(Object previo) {
this.previo = (EnlaceNormal) previo;
}
}

View File

@@ -8,6 +8,7 @@ import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.shape.Polygon;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.util.Duration;
@@ -66,6 +67,40 @@ public class Grafico {
destacado = -1;
}
/**
* Crear una flecha que apunta por abajo.
* @return StackPane: Devolver el stackpane que contiene la flecha.
*/
public static StackPane crearFlechaAbajo() {
Polygon polygon = new Polygon();
polygon.getPoints().addAll(
0.0, 0.0,
10.0, 0.0,
5.0, 10.0
);
StackPane stackPane = new StackPane();
stackPane.getChildren().addAll(polygon);
return stackPane;
}
/**
* Crear una flecha que apunta por arriba.
* @return StackPane: Devolver el stackpane que contiene la flecha.
*/
public static StackPane crearFlechaArriba() {
Polygon polygon = new Polygon();
polygon.getPoints().addAll(
5.0, 0.0,
0.0, 10.0,
10.0, 10.0
);
StackPane stackPane = new StackPane();
stackPane.getChildren().addAll(polygon);
return stackPane;
}
/**
* Crear una linea vertical
* @return StackPane: Devolver el stackpane que contiene la linea vertical.

View File

@@ -1,28 +1,57 @@
package cl.cromer.estructuras;
public class ListaEnlazada {
/**
* El enlace principal de la lista.
*/
private Enlace lista;
/**
* La cantidad de enlaces que están en la lista.
*/
private int size;
/**
* El tipo de lista enlazada.
*/
private int tipo;
/**
* Inicilizar.
*/
public ListaEnlazada() {
lista = null;
}
/**
* Devolver la cantidad de enlaces que están en la lista.
* @return int: La cantidad.
*/
public int size() {
return size;
}
/**
* Devolver el tipo de lista.
* @return int: El tipo.
*/
public int getTipo() {
return tipo;
}
/**
* Cambiar el tipo de lista.
* @param tipo int: El tipo a cambiar.
*/
public void setTipo(int tipo) {
this.tipo = tipo;
}
/**
* Buscar una llave en la lista.
* @param llave int: La llave a buscar.
* @return Enlace: El enlace que contiene la llave buscada.
*/
public Enlace buscar(int llave) {
if (this.lista != null) {
// La lista no es vacia
@@ -31,7 +60,7 @@ public class ListaEnlazada {
// Buscar hasta la llave es encontraddo
if (lista.getSiguente() != null) {
// Buscar en la sigenute enlace
lista = lista.getSiguente();
lista = (Enlace) lista.getSiguente();
}
else {
// No se encuentra
@@ -47,13 +76,20 @@ public class ListaEnlazada {
}
}
public boolean insertar(int llave, int valor) {
/**
* Insertar una llave en la lista.
* @param llave int: La llave a insertar.
* @return boolean: Verdad si fue insertado, sino falso.
*/
public boolean insertar(int llave) {
if (buscar(llave) == null) {
// Crear una enlace y agregarla a la lista
Enlace nueva = new Enlace();
Enlace nueva = new EnlaceNormal();
nueva.setLlave(llave);
nueva.setValor(valor);
nueva.setSiguente(lista);
if (lista != null) {
lista.setPrevio(nueva);
}
lista = nueva;
size++;
return true;
@@ -64,6 +100,11 @@ public class ListaEnlazada {
}
}
/**
* Eliminar un enlace de la lista.
* @param llave int: La llave a eliminar.
* @return boolean: Verdad si fue borrado, sino falso.
*/
public boolean eliminar(int llave) {
if (lista != null) {
// La lista no es vacia
@@ -74,7 +115,7 @@ public class ListaEnlazada {
if (lista.getSiguente() != null) {
// Buscar en la sigenute enlace
previo = lista;
lista = lista.getSiguente();
lista = (Enlace) lista.getSiguente();
}
else {
// No se encuentra
@@ -84,7 +125,10 @@ public class ListaEnlazada {
// Se encontró
if (lista == this.lista) {
// Si es la primera enlace, cambiarla al siguente enlace
this.lista = this.lista.getSiguente();
this.lista = (Enlace) this.lista.getSiguente();
if (this.lista.getPrevio() != null) {
this.lista.setPrevio(null);
}
}
else {
// Sino cortar esta enlace de la lista
@@ -109,7 +153,7 @@ public class ListaEnlazada {
int i = size();
Enlace lista = this.lista;
while (i > indice + 1) {
lista = lista.getSiguente();
lista = (Enlace) lista.getSiguente();
i--;
}
return lista;
@@ -118,40 +162,5 @@ public class ListaEnlazada {
return null;
}
}
// Estructura de enlaces
public class Enlace {
private int llave;
private int valor;
private Enlace siguente;
protected Enlace() {
siguente = null;
}
protected int getLlave() {
return llave;
}
protected void setLlave(int llave) {
this.llave = llave;
}
protected int getValor() {
return valor;
}
protected void setValor(int valor) {
this.valor = valor;
}
protected Enlace getSiguente() {
return siguente;
}
protected void setSiguente(Enlace siguente) {
this.siguente = siguente;
}
}
}

View File

@@ -0,0 +1,175 @@
package cl.cromer.estructuras;
public class ListaEnlazadaCircular {
/**
* El primer enlace.
*/
private Enlace primer;
/**
* El ultimo enlace.
*/
private Enlace ultimo;
/**
* La cantidad de enlaces que hay.
*/
private int size;
/**
* El tipo de lista enlazada.
*/
private int tipo;
/**
* Inicilizar.
*/
public ListaEnlazadaCircular() {
primer = null;
ultimo = null;
}
/**
* Devolver la cantidad de enlaces que están en la lista.
* @return int: La cantidad.
*/
public int size() {
return size;
}
/**
* Devolver el tipo de lista.
* @return int: El tipo de lista.
*/
public int getTipo() {
return tipo;
}
/**
* Cambiar el tipo de lista.
* @param tipo int: El tipo a cambiar.
*/
public void setTipo(int tipo) {
this.tipo = tipo;
}
/**
* Buscar una llave en la lista.
* @param llave int: La llave a buscar.
* @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.getSiguente();
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;
}
}
/**
* Insertar una llave en la lista.
* @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) {
ultimo = enlace;
}
enlace.setLlave(llave);
enlace.setSiguente(primer);
primer = enlace;
ultimo.setSiguente(primer);
size++;
return true;
}
else {
// Se falló porque la llave ya existe
return false;
}
}
/**
* Eliminar un enlace de la lista.
* @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.getSiguente() != null) {
// Buscar en la sigenute enlace
previo = lista;
lista = (Enlace) lista.getSiguente();
}
else {
// No se encuentra
return false;
}
i++;
}
// Se encontró
if (lista == this.primer) {
// Si es la primera enlace, cambiarla al siguente enlace
this.primer = (Enlace) this.primer.getSiguente();
}
else {
// Sino cortar esta enlace de la lista
previo.setSiguente(lista.getSiguente());
}
size--;
return true;
}
else {
// La lista es vacia, no hay nada para eliminar
return false;
}
}
/**
* 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.getSiguente();
i--;
}
return lista;
}
else {
return null;
}
}
}

View File

@@ -6,14 +6,12 @@ import javafx.scene.Scene;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
import java.util.logging.Level;
/**
@@ -21,11 +19,6 @@ import java.util.logging.Level;
* @author Chris Cromer
*/
public class ListaEnlazdaController implements Initializable {
/**
* La caja para ingresar la llave.
*/
@FXML private TextFieldLimited llaveLista;
/**
* La caja para ingresar el valor.
*/
@@ -56,6 +49,11 @@ public class ListaEnlazdaController implements Initializable {
*/
private ListaEnlazada listaEnlazada;
/**
* La lista enlazada circular usado en la aplicación.
*/
private ListaEnlazadaCircular listaEnlazadaCircular;
/**
* Tipo de lista enlazada a trabajar.
*/
@@ -97,12 +95,23 @@ public class ListaEnlazdaController implements Initializable {
int minimo = 0;
int rango = maximo - minimo + 1;
for (int i = listaEnlazada.size(); listaEnlazada.size() < 5; i++) {
int numero = random.nextInt(rango) + minimo;
while (listaEnlazada.buscar(i) != null) {
i++;
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
for (listaEnlazada.size(); listaEnlazada.size() < 5; ) {
int numero = random.nextInt(rango) + minimo;
while (listaEnlazada.buscar(numero) != null) {
numero = random.nextInt(rango) + minimo;
}
listaEnlazada.insertar(numero);
}
}
else {
for (listaEnlazadaCircular.size(); listaEnlazadaCircular.size() < 5; ) {
int numero = random.nextInt(rango) + minimo;
while (listaEnlazadaCircular.buscar(numero) != null) {
numero = random.nextInt(rango) + minimo;
}
listaEnlazadaCircular.insertar(numero);
}
listaEnlazada.insertar(i, numero);
}
generarGrafico();
}
@@ -116,7 +125,14 @@ public class ListaEnlazdaController implements Initializable {
initializeLista();
}
listaEnlazada = new ListaEnlazada();
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
listaEnlazada = new ListaEnlazada();
listaEnlazada.setTipo(listaEnlazadaTipos.getTipo());
}
else {
listaEnlazadaCircular = new ListaEnlazadaCircular();
listaEnlazadaCircular.setTipo(ListaEnlazadaTipos.SIMPLE);
}
generarGrafico();
}
@@ -129,7 +145,7 @@ public class ListaEnlazdaController implements Initializable {
initializeLista();
}
String tipo;
/*String tipo;
switch (listaEnlazadaTipos.getTipo()) {
case ListaEnlazadaTipos.SIMPLE:
tipo = "Simple";
@@ -142,17 +158,22 @@ public class ListaEnlazdaController implements Initializable {
break;
default:
tipo = "Simple";
}
}*/
// Mostrar el codigo
//String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/insertar")).useDelimiter("\\Z").next();
//codigoLista.setText(codigoTexto);
if (llaveLista.getText() != null && !llaveLista.getText().trim().equals("") && valorLista.getText() != null && !valorLista.getText().trim().equals("")) {
if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) {
try {
boolean exito = listaEnlazada.insertar(Integer.valueOf(llaveLista.getText()), Integer.valueOf(valorLista.getText()));
boolean exito;
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
exito = listaEnlazada.insertar(Integer.valueOf(valorLista.getText()));
}
else {
exito = listaEnlazadaCircular.insertar(Integer.valueOf(valorLista.getText()));
}
if (exito) {
llaveLista.setText("");
valorLista.setText("");
generarGrafico();
}
@@ -191,10 +212,15 @@ public class ListaEnlazdaController implements Initializable {
//codigoLista.setText(codigoTexto);
try {
if (llaveLista.getText() != null && !llaveLista.getText().trim().equals("")) {
boolean exito = listaEnlazada.eliminar(Integer.valueOf(llaveLista.getText()));
if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) {
boolean exito;
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
exito = listaEnlazada.eliminar(Integer.valueOf(valorLista.getText()));
}
else {
exito = listaEnlazadaCircular.eliminar(Integer.valueOf(valorLista.getText()));
}
if (exito) {
llaveLista.setText("");
valorLista.setText("");
generarGrafico();
}
@@ -229,8 +255,14 @@ public class ListaEnlazdaController implements Initializable {
//codigoLista.setText(codigoTexto);
try {
if (llaveLista.getText() != null && !llaveLista.getText().trim().equals("")) {
ListaEnlazada.Enlace enlace = listaEnlazada.buscar(Integer.valueOf(llaveLista.getText()));
if (valorLista.getText() != null && !valorLista.getText().trim().equals("")) {
Enlace enlace;
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
enlace = listaEnlazada.buscar(Integer.valueOf(valorLista.getText()));
}
else {
enlace = listaEnlazadaCircular.buscar(Integer.valueOf(valorLista.getText()));
}
if (enlace != null) {
generarGrafico();
grafico = new Grafico(scene);
@@ -281,8 +313,15 @@ public class ListaEnlazdaController implements Initializable {
private void initializeLista() {
scene = contenidoLista.getScene();
grafico = new Grafico(scene);
this.listaEnlazada = new ListaEnlazada();
listaEnlazadaTipos = (ListaEnlazadaTipos) scene.getUserData();
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
listaEnlazada = new ListaEnlazada();
listaEnlazada.setTipo(listaEnlazadaTipos.getTipo());
}
else {
listaEnlazadaCircular = new ListaEnlazadaCircular();
listaEnlazadaCircular.setTipo(ListaEnlazadaTipos.SIMPLE);
}
}
/**
@@ -292,10 +331,55 @@ public class ListaEnlazdaController implements Initializable {
grafico.removerDestacar();
colores = new Colores();
contenidoLista.getChildren().clear();
for (int i = 0; i < listaEnlazada.size(); i++) {
ListaEnlazada.Enlace enlace = listaEnlazada.getIndice(i);
contenidoLista.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave()) + " | " + String.valueOf(enlace.getValor()), 50), Grafico.crearLineaVertical());
colores.siguinteColor();
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
for (int i = 0; i < listaEnlazada.size(); i++) {
Enlace enlace = listaEnlazada.getIndice(i);
if (listaEnlazada.getTipo() == ListaEnlazadaTipos.SIMPLE) {
dibujarSimple(enlace);
}
else if (listaEnlazada.getTipo() == ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA) {
if (i != listaEnlazada.size() - 1) {
dibujarDoble(enlace);
}
else {
dibujarSimple(enlace);
}
}
colores.siguinteColor();
}
}
else {
for (int i = 0; i < listaEnlazadaCircular.size(); i++) {
Enlace enlace = listaEnlazadaCircular.getIndice(i);
dibujarSimple(enlace);
colores.siguinteColor();
}
}
}
/**
* Dibujarlo con una flecha.
* @param enlace Object: El enlace que tiene la llave y valor.
*/
private void dibujarSimple(Enlace enlace) {
contenidoLista.getChildren().addAll(
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave())),
Grafico.crearLineaVertical(),
Grafico.crearFlechaAbajo()
);
}
/**
* Dibujarlo con dos flechas.
* @param enlace El enlace que tiene la llave y valor.
*/
private void dibujarDoble(Enlace enlace) {
contenidoLista.getChildren().addAll(
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave())),
Grafico.crearFlechaArriba(),
Grafico.crearLineaVertical(),
Grafico.crearFlechaAbajo()
);
}
}

View File

@@ -147,7 +147,35 @@ public class MenuController extends VBox implements Initializable {
protected void menuListaEnlazadaSimple() {
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.SIMPLE);
loadStage(
resourceBundle.getString("tituloMerge"),
resourceBundle.getString("tituloListaEnlazadaSimple"),
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
"/cl/cromer/estructuras/css/style.css",
listaEnlazadaTipos
);
}
/**
* Click en Lista Enlazada Circular.
*/
@FXML
protected void menuListaEnlazadaCircular() {
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.CIRCULAR);
loadStage(
resourceBundle.getString("tituloListaEnlazadaCircular"),
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
"/cl/cromer/estructuras/css/style.css",
listaEnlazadaTipos
);
}
/**
* Click en Lista Enlazada Doble.
*/
@FXML
protected void menuListaEnlazadaDoble() {
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA);
loadStage(
resourceBundle.getString("tituloListaEnlazadaDoble"),
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
"/cl/cromer/estructuras/css/style.css",
listaEnlazadaTipos

View File

@@ -9,6 +9,9 @@ tituloSeleccion=Selection
tituloShell=Shell
tituloQuick=Quick
tituloMerge=Merge
tituloListaEnlazadaSimple=Simple Linked List
tituloListaEnlazadaCircular=Circular Linked List
tituloListaEnlazadaDoble=Double Linked List
estructuras=Structures
array=Array
@@ -24,7 +27,7 @@ merge=merge
listaEnlazada=Linked List
listaSimple=Simple
listaCircular=Circular
doblementeEnlazada=Double Linked
doblementeEnlazada=Double
pila=Stack
cola=Queue
arboles=Tree
@@ -56,8 +59,6 @@ cancelar=Cancel
cerrar=Close
error=Error
llave=Key:
valor=Value:
llenar=Fill
vaciar=Empty
insertar=Insert

View File

@@ -9,6 +9,9 @@ tituloSeleccion=Selecci\u00F3n
tituloShell=Shell
tituloQuick=Quick
tituloMerge=Merge
tituloListaEnlazadaSimple=Lista Enlazada Simple
tituloListaEnlazadaCircular=Lista Enlazada Circular
tituloListaEnlazadaDoble=Lista Enlazada Doble
estructuras=Estructuras
array=Array
@@ -56,8 +59,6 @@ cancelar=Cancelar
cerrar=Cerrar
error=Error
llave=Llave:
valor=Valor:
vaciar=Vaciar
llenar=Llenar
insertar=Insertar

View File

@@ -18,9 +18,6 @@
<Button text="%insertar" onAction="#botonInsertar" />
<Button text="%eliminar" onAction="#botonEliminar" />
<Button text="%buscar" onAction="#botonBuscar" />
<Text text="%llave" />
<TextFieldLimited fx:id="llaveLista" maxLength="2" prefWidth="40" />
<Text text="%valor" />
<TextFieldLimited fx:id="valorLista" maxLength="2" prefWidth="40" />
</HBox>
<VBox fx:id="contenidoLista" alignment="CENTER" />

View File

@@ -18,8 +18,8 @@
</Menu>
<Menu text="%listaEnlazada">
<MenuItem text="%listaSimple" onAction="#menuListaEnlazadaSimple"/>
<MenuItem text="%listaCircular"/>
<MenuItem text="%doblementeEnlazada"/>
<MenuItem text="%listaCircular" onAction="#menuListaEnlazadaCircular"/>
<MenuItem text="%doblementeEnlazada" onAction="#menuListaEnlazadaDoble"/>
</Menu>
<MenuItem text="%pila" onAction="#menuPila"/>
<MenuItem text="%cola" onAction="#menuCola"/>