A continuación se mostrara un código ,que se trata crear una clase Nodo fruta la cual tendrá como métodos de procedimiento insertar frutas,sacar por Pila y Colas,imprimir y eliminar usando un interfaz.
- Empezamos creando nuestra clase NodoFruta
public class NodoFruta {
private Object fruta;
private float precio;
private NodoFruta nodfrut;
public NodoFruta(Object fruta, float precio) {
this.fruta = fruta;
this.precio = precio;
this.nodfrut = null;
}
public Object getFruta() {
return fruta;
}
public void setFruta(Object fruta) {
this.fruta = fruta;
}
public float getPrecio() {
return precio;
}
public void setPrecio(float precio) {
this.precio = precio;
}
public NodoFruta getNodfrut() {
return nodfrut;
}
public void setNodfrut(NodoFruta nodfrut) {
this.nodfrut = nodfrut;
}
public String toString() {
return String.valueOf(this.fruta + "\t\t" + this.precio);
}
}
- Nuestra clase OperacionNodo donde se creara los métodos ya explicados
import javax.swing.JOptionPane;
import jdk.nashorn.internal.objects.NativeString;
public class OperacionNodo {
NodoFruta inicio;
NodoFruta fin;
public OperacionNodo() {
this.fin = null;
}
// EL METODO DE INGRESO ES IGUAL PARA AMBOS (PILAS Y COLAS).
public void ingresarNodo(Object fruta, float precio) {
NodoFruta nodonuevo = new NodoFruta(NativeString.toUpperCase(fruta), precio);
if (fin == null) {
inicio = fin = nodonuevo;
} else {
nodonuevo.setNodfrut(fin);
fin = nodonuevo;
}
}
//METODO SACAR POR COLA
public void sacarNodoCola() {
NodoFruta temp = fin;
while (temp != null) {
if (temp.getNodfrut() == inicio) {
inicio = temp;
inicio.setNodfrut(null);
break;
}
temp = temp.getNodfrut();
}
}
//METODO SACAR POR PILA
public void sacarNodoPila() {
fin = fin.getNodfrut();
}
//ELIMINAR POR FRUTA.
public void eliminar(Object nombre) {
NodoFruta temp = fin, temp2 = fin;
if (estaContenido(NativeString.toUpperCase(nombre))) {
while (temp != null) {
if (temp.getFruta().equals(NativeString.toUpperCase(nombre))) {
if (fin.getFruta().equals(NativeString.toUpperCase(nombre))) {
fin = temp2.getNodfrut();
break;
} else {
temp2.setNodfrut(temp.getNodfrut());
break;
}
}
temp2 = temp;
temp = temp.getNodfrut();
}
}
}
//METODO QUE BUSCA EN EL CONTENIDO SI ESTA O NO
boolean estaContenido(Object fruta) {
boolean band = false;
NodoFruta temp = fin;
while (temp != null) {
if (temp.getFruta().equals(fruta)) {
band = true;
break;
}
temp = temp.getNodfrut();
}
JOptionPane.showMessageDialog(null, "No se encuentra en el contenido...!");
return band;
}
//AL IGUAL QUE EL METODO DE INGRESO, ES LO MISMO EL METO PARA MOSTRAR.
public String mostrar() {
NodoFruta temp = fin;
String cadena = "";
while (temp != null) {
cadena += temp.toString() + "\n";
//System.out.println(temp.toString() + "");
temp = temp.getNodfrut();
}
return cadena;
}
}
public class TestFruta {
public static void main(String[] args) {
OperacionNodo oper = new OperacionNodo();
oper.ingresarNodo("Fresa", (float) 12.3);
oper.ingresarNodo("Cereza", 9);
oper.ingresarNodo("Platanos", 13);
oper.ingresarNodo("Mora", (float) 18.30);
oper.mostrar();
System.out.println("\n\tSACANDO FRUTA");
oper.sacarNodoCola();
oper.mostrar();
System.out.println("\n\tNUEVA FRUTA");
oper.ingresarNodo("Papaya", (float) 11.30);
oper.mostrar();
System.out.println("\n\tSACANDO FRUTA");
oper.sacarNodoPila();
oper.mostrar();
oper.ingresarNodo("Melones", 9);
oper.ingresarNodo("Uva", 13);
System.out.println("\n\tNUEVA FRUTA");
oper.mostrar();
System.out.println("\n\tELIMINAR");
oper.eliminar("mora");//SI ESCRIBO EL NOMBRE DE LA FRUTA
oper.mostrar(); //EN MAYUSCULA O MINUSCULA QUE LO CONVIERTA A MAYUSCULA
}
}
- Ahora nuestra clase Frame donde crearemos nuestra interfaz
public class FrameFrutas extends javax.swing.JFrame {
OperacionNodo oper=new OperacionNodo();
public FrameFrutas() {
initComponents();
setVisible(true);
setTitle("FRUTAS");
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void bcolaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
oper.sacarNodoCola();
tamostrar.setText(oper.mostrar());
}
private void bingresarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
oper.ingresarNodo(tffruta.getText(), Float.parseFloat(tfprecio.getText()));
tffruta.setText("");
tfprecio.setText("");
tffruta.requestFocus();
}
private void bimprimirActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
tamostrar.setText(oper.mostrar());
}
private void bpilaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
oper.sacarNodoPila();
tamostrar.setText(oper.mostrar());
}
private void beliminarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
oper.eliminar(tffruta.getText());
tffruta.setText("");
tamostrar.setText(oper.mostrar());
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FrameFrutas().setVisible(true);
}
});
}
private javax.swing.JButton bcola;
private javax.swing.JButton beliminar;
private javax.swing.JButton bimprimir;
private javax.swing.JButton bingresar;
private javax.swing.JButton bpila;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea tamostrar;
private javax.swing.JTextField tffruta;
private javax.swing.JTextField tfprecio;
Esta fue la interfaz que hice