Nodo.java
·
Creamos una clase publica llamada nodo
o
Declaramos dato y siguiente
o
Luego creamos un constructor //con diferente parámetro
§
Inicializamos dato = d // d el dato que se tiene
§
Inicializamos siguiente = null // el nodo siguiente
o
Luego declaramos lo siguiente
§
Dato es igual a d
§
Y siguiente es igual a n
package letraslse;
public class Nodo {
public String dato;
public Nodo siguiente;
//CONSTRUCTOR
public Nodo(String d){
this.dato = d;
this.siguiente=null;
}
public Nodo(String d, Nodo n){
dato =d ;
siguiente = n;
}
}
LetrasLSE.java
·
Instanciar objeto de la clase lista
o Declaramos
variable opción opcion y elemento el
o Iniciar
variable opcion = 0
o Hacer
un do while donde colocamos donde colocamos las opciones y donde va a ir
el try case
o Controlar
errores (try – case)
o opción
va a ser igual a las opciones de menú (en este caso son 6 opciones)
o menú
de opciones con la variable opción (switch)
o realizar
cada una de las opciones dentro del menú
§ Agregar
un elemento al inicio de la lista
package letraslse;
import javax.swing.JOptionPane;
import java.lang.String;
public class LetrasLSE {
public static void
main(String[] args) {
Lista impLista = new Lista();
int opcion=0;
String el;
do{
try{
opcion =
Integer.parseInt(JOptionPane.showInputDialog(null,""
+"1. Agregar
un elemento al inicio de la lista\n"
+"2. Agregar un elemento al
final de la lista\n"
+"3. Mostrar
los elementos de la lista\n"
+"4. Eliminar
un elemento del inicio de la lista\n"
+"5. Eliminar
un elemento especifico\n"
+"6.
Salir","Opciones del programa",3));
switch(opcion){
case 1: //1. Agregar un
elemento al inicio de la lista
try{
el=JOptionPane.showInputDialog
(
null,
"Ingreso
el elemento",
"Insertando al inicio",3
);
impLista.agregarAlInicio(el);
}catch(NumberFormatException n){
JOptionPane.showMessageDialog(null, "Error" + n.getMessage());
}
break;
case 2: //2.
Agregar un elemento al final de la lista
try{
el=JOptionPane.showInputDialog
(
null,
"Ingreso
el elemento",
"Insertando al final",3
);
impLista.agregarAlFinal(el);
}catch(NumberFormatException n){
JOptionPane.showMessageDialog(null, "Error" + n.getMessage());
}
break;
case 3: //3. Mostrar los
elementos de la lista
impLista.mostrarLista();
break;
case 4: //4. Eliminar un
elemento del inicio de la lista
el=impLista.borrarDelInicio();
JOptionPane.showMessageDialog
(
null,
"El
elemento eliminado es "+el,
"Eliminando NODO
del inicio",
JOptionPane.INFORMATION_MESSAGE
);
break;
default:
JOptionPane.showMessageDialog(null, "Opcion incorrecta");
break;
case 5://5. Eliminar un elemento
especifico
try{el=JOptionPane.showInputDialog
(
null,
"Ingrese el elemento a eliminar",
"Eliminando
Nodo...",JOptionPane.INFORMATION_MESSAGE
);
impLista.borrarEspecifico(el);
JOptionPane.showMessageDialog
(
null,
"El
elemento eliminado es "+el,
"Eliminando NODO
especifico",
JOptionPane.INFORMATION_MESSAGE
);
}catch(NumberFormatException n){
JOptionPane.showMessageDialog(null,
"Error" + n.getMessage());
}
break;
case 6://6.
Salir
JOptionPane.showMessageDialog(null, "Programa terminado...");
break;
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Error"+ e.getMessage());
}
} while (opcion !=6);
}
}
Lista.java
·
Declaramos dos variables que son inicio y fin
·
luego creamos un constructor
o
donde inicio y fin es igual a nulo
//algoritmo para saber si la lista esta vacía
·
método tipo booleano
o
si inicio es igual a fin retornara
verdadero true
o
si no retornara falso false
//algoritmo
para agregar nodo al inicio
·
método tipo void
·
inicio igual nuevo nodo (elemento, inicio)
o si
fin es igual a null
§ entonces
fin es igual a inicio
//algoritmo
para agregar nodo al final
·
método tipo void
o
si no esta vacia
§
fin de siguiente es igula a nuevo (elemento)
§
fin es igual a fin de siguiente
o
entonces
§
inicio es igual a fin y es igual a nuevo (elemento)
//algoritmo
para mostrar los datos
·
método tipo void
o
nodo recorrer es igual a inicio
o
mientras recorrer no sea igual a null
§
imprimir “recorrer.dato”
§
recorrer es igual recorrer de siguiente
//método
para eliminar un nodo del inicio
·
elemento es igual a inicio de dato
·
si inicio es igual a fin a nulo
o
apuntar inicio y fin a nulo
·
si no entonces
o
retornar el valor del elemento
//algoritmo
para eliminar un nodo especifico
·
si la lista no esta vacia
o
si inicio es igual a fin y elemento igual a
inicio de dato
§
entonces apuntar inicio y fin a nulo
o
si no el elemento igual (inicio de dato)
§
entonces apuntar inicio a inicio de siguiente
o
si no entonces
§
crear un nodo temporal y anterior
§
apuntar anterior a inicio
§
apuntar temporal a inicio de siguiente
§
mientras temporal sea diferente de nulo y
temporal de dato sea diferente de elemento
·
apuntar anterior anterior de siguiente
·
apuntar temporal a temporal de siguiente
§
si temporal sea diferente de nulo
·
apuntar anterior de siguiente a temporal de
siguiente
·
si temporal es igual a fin
o
fin va a ser igual a anterior
package
eliminariniciolse;
public
class Lista {
protected Nodo inicio,fin;
//CONSTRUCTOR
public Lista(){
inicio = null;
fin =null;
}
//METODO PARA SABER SI LA LISTA ESTA VACIA
public
boolean estaVacia(){
if(inicio==fin){
return true;
}else{
return false;
}
}
//METODO PARA AGREGAR AL INICIO
public void agregarAlInicio(int
elemento){
//creando nodo
inicio = new Nodo(elemento, inicio);
if(fin==null){
fin=inicio;
}
}
//Metodo para agreagr al final
public void agregarAlFinal(int
elemento){
if(!estaVacia()){
fin.siguiente = new Nodo
(elemento);
fin = fin.siguiente;
}else{
inicio = fin = new Nodo
(elemento);
}
}
//METODOD PARA MOSTRAR LOS DATOS
public void mostrarLista(){
Nodo recorrer = inicio;
System.out.println("\n");
while(recorrer
!= null){
System.out.print("["+recorrer.dato+"] -->");
recorrer = recorrer.siguiente;
}
}
//Metodo para eliminar del inicio
public int borrarDelInicio(){
int elemento = inicio.dato;
if(inicio==fin){
inicio = null;
fin=null;
}else{
inicio = inicio.siguiente;
}
return elemento;
}
//Metodo para eliminar un nodo
especifico
public void borrarEspecifico(int
elemento){
if(!estaVacia())
if(inicio==fin &&
elemento==inicio.dato){
inicio=fin=null;
}else
if(elemento==inicio.dato){
inicio=inicio.siguiente;
}else{
Nodo anterior, temporal;
anterior=inicio;
temporal=inicio.siguiente;
while(temporal != null
&& temporal.dato != elemento){
anterior=anterior.siguiente;
temporal=temporal.siguiente;
}
if(temporal != null){
anterior.siguiente=temporal.siguiente;
if(temporal==fin){
fin=anterior;
}
}
}
}
int
borrarEspecifico() {
throw new
UnsupportedOperationException("Not supported yet."); //To change body
of generated methods, choose Tools | Templates.
}
}
No hay comentarios.:
Publicar un comentario