trabajo cuatro
DESCRIPTION
TrabajoTRANSCRIPT
Trabajo Numero 4:Mantenimiento Listas:Elaborar un programa que permita la administracion de una lista, mediante el uso de listas simples. Este debe constar de metodos de inserción de elemento al inicio y al final, eliminación de elemento por valor inicial, final y por valor a eleccion. Como tambien el ordenamientode la lista.
Codigo:
FRAME:
package mantenimientoListas;
import javax.swing.*;
public class Frame extends JFrame {// Metodo constructorFrame(JPanel panel){
super("Mantenimiento Listas - Enteros");this.setContentPane(panel);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);this.setBounds(0,0,650,500);this.setVisible(true);
}}
MAIN:package mantenimientoListas;
public class Main {
public static void main(String[] args) { Panel panel = new Panel(); Frame frame = new Frame(panel);
}}
PANEL:package mantenimientoListas;
import java.awt.Color;import java.awt.Font;import java.awt.event.*;import javax.swing.*;
public class Panel extends JPanel implements ActionListener {
JLabel lblArreglo; JButton[] btn = new JButton[10]; JTextArea txtS; JScrollPane scpScroll; ListaSimple lista = new ListaSimple();
Panel() {
this.setLayout(null);
lblArreglo = new JLabel("Arreglos Lineales", JLabel.CENTER); lblArreglo.setForeground(Color.blue); lblArreglo.setFont(new Font("dialog", 3, 24)); lblArreglo.setBounds(20, 20, 300, 40); add(lblArreglo);
for (int i = 0; i < 10; i++) { btn[i] = new JButton(""); btn[i] = new JButton(etiqueta(i)); btn[i].addActionListener(this); btn[i].setBounds(320, (23 * i) + 100, 300, 23); this.add(btn[i]); } txtS = new JTextArea(); btn[3].setVisible(false); scpScroll = new JScrollPane(txtS); scpScroll.setBounds(10, 80, 300, 298); add(scpScroll); }
// Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { for (int i = 0; i < btn.length; i++) { if (e.getSource() == btn[i]) { botonPulsado(i); } } } // Métodos que retornan valor (con parámetros)
String etiqueta(int i) { switch (i) {
case 0: return "Leer Valor"; case 1: return "Ingresar al Inicio"; case 2: return "Ingresar al Final"; case 3: return "Ingresar en Orden"; case 4: return "Eliminar Valor Inicial"; case 5: return "Eliminar Valor Final"; case 6: return "Eliminar Valor"; case 7: return "Ordenar Descendentes"; case 8: return "Ordenar Ascendente"; case 9: return "Listar"; case 10: return "Limpiar";
} return ""; } // Métodos tipo void (con parámetros)
void botonPulsado(int i) { switch (i) { case 0: leerDato(); break; case 1: ingresarAlInicio(); break; case 2: ingresarAlFinal(); break; case 3:
break; case 4: eliminarInicio(); break; case 5: eliminarFin(); break; case 6: eliminarValor();
break; case 7: ordenarDescendente(); break; case 8: ordenarAscendente(); break; case 9: listar(); break; case 10: limpiar(); break; } }
void leerDato() { limpiar(); lista.agregarFinal(); ordenarAscendente(); listar(); }
void ingresarAlInicio() { limpiar(); lista.agregarInicio(); listar(); }
void ingresarAlFinal() { limpiar(); lista.agregarFinal(); listar(); }
void eliminarInicio() { limpiar(); lista.eliminarInicio(); listar(); }
void eliminarFin() { limpiar(); lista.eliminarFinal(); listar(); }
void eliminarValor() { limpiar(); lista.eliminarValor();
listar(); }
void ordenarAscendente() { limpiar(); lista.ordenarEnAscenso(); listar(); } void ordenarDescendente() { limpiar(); lista.ordenarEnDescenso(); listar(); }
void obtener(int pos) { limpiar(); }
void listar() {
Nodo aux = lista.getLista(); txtS.setText(""); if (aux == null) { txtS.setText("La lista esta vacia"); } else { int c = 0; while (aux != null) { c++; txtS.append(c + " - " + aux.codigo + "\n"); aux = aux.sig; } } }
void limpiar() { txtS.setText(""); }
void imprimir(String cadena) { txtS.append(cadena + "\n"); }
}
LISTA SIMPLE:
package mantenimientoListas;
import javax.swing.JOptionPane;
public class ListaSimple {
Nodo lista;
public Nodo getLista() { return lista; }
public void setLista(Nodo lista) { this.lista = lista; }
void agregarInicio() { Nodo n = leerNodo(); agregarInicio1(n); }
void agregarInicio1(Nodo n) { n.sig = lista; lista = n; }
void eliminarInicio() { if (lista == null) { } else { lista = lista.sig; } }
void agregarFinal() { Nodo n = leerNodo(); agregarFinal1(n);
}
void agregarFinal1(Nodo n) { Nodo aux = lista; if (lista != null) { while (aux.sig != null) { aux = aux.sig; } aux.sig = n; } else { agregarInicio1(n); } }
void eliminarFinal() { Nodo aux = lista; if (lista != null) { if (lista.sig == null) { lista = null; } else { while (aux.sig.sig != null) { aux = aux.sig; } aux.sig = null; } } else { eliminarInicio(); } }
void ordenarEnAscenso() {
if (lista != null) { Nodo mayor = null; Nodo ordenada = null; while (lista != null) { mayor = obtenerMayor(); eliminar(mayor); mayor.sig = ordenada; ordenada = mayor; } lista = ordenada; } }
void ordenarEnDescenso() { if (lista != null) { Nodo menor = null; Nodo ordenada = null; while (lista != null) { menor = obtenerMenor(); eliminar(menor); menor.sig = ordenada; ordenada = menor; } lista = ordenada; } }
void eliminarValor(){ if( lista!= null ){ Nodo n = leerNodo(); Nodo aux = lista;
while(aux!=null){ if( n.codigo == aux.codigo ){ eliminar(aux); } aux = aux.sig; } } else{} }
void eliminar(Nodo n) { if (n == lista) { lista = lista.sig; } else { Nodo aux = lista; while (aux.sig != n) { aux = aux.sig; } aux.sig = n.sig; } }
Nodo obtenerMayor() {
Nodo aux = lista; Nodo mayor = lista; while (aux != null) { if (aux.codigo > mayor.codigo) { mayor = aux; } aux = aux.sig; } return mayor; }
Nodo obtenerMenor() {
Nodo aux = lista; Nodo menor = lista; while (aux != null) { if (aux.codigo < menor.codigo) { menor = aux; } aux = aux.sig; } return menor; }
Nodo leerNodo() { Nodo n = new Nodo(); n.codigo = Integer.parseInt(JOptionPane.showInputDialog(lista)); return n; }}
NODO:package mantenimientoListas;
public class Nodo {
Nodo sig; int codigo;
}
RESULTADOS:Llenado:
Ordenamiento Descendiente:
Eliminacion de Valor Inicial:
Eliminacion del valor 11: