PRACTICA No.6
CONCEPTO
Es una estructura lineal, dinámica, su acceso es secuencial y esta indicado por un puntero llamado inicio, sus elementos es una sucesión de n nodos y tiene tres operaciones básicas: insertar, eliminar y recorrer.
PROCEDIMIENTO
1.- Primero creamos la clase Nodo en la cual refractamos información y enlace, y colocamos un constructor llamado Nodo.
2.-Elaboramos la clase Lista la cual refractamos inicio, un constructor llamado Lista, tiene ocho métodos: inserta al inicio,inserta al final, insertantes, insertadespues, eliminainicio, eliminafinal, eliminax e imprimir.
Comienza la clase Nodo
package Ortiz;import javax.swing.JOptionPane;
public class Nodo {
private String informacion;
private Nodo enlace;
public Nodo (String x)
{
informacion=x;
enlace=null;
}
public Nodo(String x, Nodo n){
informacion=x;
enlace=n;
}
}
comienza la clase Lista
package Ortiz;
import javax.swing.JOptionPane;
public class Lista {
private Nodo inicio;
Lista(){
inicio=null;
}
public Lista InsertarInicio(String informacion){
Nodo nuevo;
nuevo= new Nodo(informacion);//crear nuevo nodo(elemento)
nuevo.setEnlace(getInicio());//enlaza nuevo al frente de la lista
setInicio(nuevo);//mueve inicio y apunta al nuevo nodo
return this;//devuelve la referencia del objeto lista
}
public Lista InsertarFinal(String informacion){//este metodo funciona si por lo menos la lista tiene un nodo
Nodo ultimo;
ultimo=inicio;//ultimo se inicializa al comienza de la lista
while(ultimo.getEnlace() !=null){//recorrido para buscar el ultimo nodo
ultimo=ultimo.getEnlace();//ultimo toma la direccion del nodo siguiente
}
ultimo.setEnlace(new Nodo (informacion)); //se crea el nuevo nodo despues del ultimo
return this;
}
public Lista InsertarAntes(String nombre, String ref){//se utilizan parametros
Nodo nuevo, actual, anterior= null;
boolean esta=true;
actual=inicio;//vamos a recorrer la lista con actual
while (!actual.getEnlace().equals(ref)&& esta){//para comparar dos cadenas
if(actual.getEnlace()!=null){
anterior=actual;
actual=actual.getEnlace();
}
else{
esta=false;
}
}
if(esta){
if(inicio==actual){//vamos a insertar antes del primer nodo
nuevo=new Nodo(nombre, inicio);//se llama al segundo constructor
inicio=nuevo;
}
else{
nuevo=new Nodo(nombre, actual);
anterior.setEnlace(nuevo);
}
}
return this;
}
public Lista insertaDespues(String nombre, String ref){
Nodo nuevo,actual=null;
boolean esta=true;
actual=inicio;//es esencial en todo st programa
while(! actual.getInformacion().equals(ref)&& esta){
if(actual.getEnlace() !=null)
actual =actual.getEnlace();
else{
esta=false;
}
if(esta){
nuevo=new Nodo (nombre, actual.getEnlace());
actual.setEnlace(nuevo);
}
}
return this;
}
public String eliminaInicio(){
Nodo x=inicio;
inicio=inicio.getEnlace();//borrado logico
return x.getInformacion();
}
public String eliminaFinal(){///quitar de la lista l ultimo nodo
Nodo ultimo,anterior=null;
ultimo=inicio;
while(ultimo.getEnlace()!=null){
anterior=ultimo;
ultimo=ultimo.getEnlace();
}
if(inicio.getEnlace()==null){
inicio=null;
}
else{
anterior.setEnlace(null);//borrado logico
}
return ultimo.getInformacion();
}
public void imprimir(){
String cadena="";
Nodo q=inicio;
int i=1;
while(q !=null){
cadena+="\n"+i+". "+q.getInformacion();
q=q.getEnlace();
i++;
}
JOptionPane.showMessageDialog(null, cadena,"Nodos de la lista",JOptionPane.PLAIN_MESSAGE);
}
public String eliminaX (String x){
Nodo actual, anterior =null;
boolean esta=true;
actual=inicio;
while(!actual.getInformacion().equals(x)&& esta){
if(actual.getEnlace()!=null){
anterior=actual;
actual.setEnlace(actual.getEnlace());
}
else
esta=false;
}
if(esta){
anterior.setEnlace(actual);//borrado logico
return actual.getInformacion();
}
else
return " ";
}
}
Termina la clase Lista
CONCLUSIÓN
En esta práctica aprendimos a utilizar las direcciones de memoria la cual, o es mas eficiente que declarar arreglos pero a su vez mas peligrosa porque si borramos el nodo inicio perdemos la lista completa.
ventaja es que podemos hacer mejor uso de la memoria y desventaja si pierdes inicio por descuido
o por falta de conocimiento de como programar pierdes la lista
AUTORES
Javier Arley Gonzalez Roblero, Saulo Ortiz Ortiz, Manuel Alejandro Mendez Lopez.
CONCLUSIÓN
En esta práctica aprendimos a utilizar las direcciones de memoria la cual, o es mas eficiente que declarar arreglos pero a su vez mas peligrosa porque si borramos el nodo inicio perdemos la lista completa.
ventaja es que podemos hacer mejor uso de la memoria y desventaja si pierdes inicio por descuido
o por falta de conocimiento de como programar pierdes la lista
AUTORES
Javier Arley Gonzalez Roblero, Saulo Ortiz Ortiz, Manuel Alejandro Mendez Lopez.
No hay comentarios:
Publicar un comentario