nuestras visitas

miércoles, 11 de diciembre de 2013

LISTA

LISTA

















una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio de las listas enlazadas respecto a los vectores convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.

ESTE ES EL DIAGRAMA UML DE LISTA










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;
 }    
    
    public String getInformacion() {
        return informacion;
    }

    public void setInformacion(String informacion) {
        this.informacion = informacion;
    }

    public Nodo getEnlace() {
        return enlace;
    }

    public void setEnlace(Nodo enlace) {
        this.enlace = enlace;
    }   
}

import javax.swing.JOptionPane;
public class Lista
{
 private Nodo inicio;
Lista()
{
inicio=null;
}
  
    public Nodo getInicio() {
        return inicio;
    }

    public void setInicio(Nodo inicio) {
        this.inicio = inicio;
    }
public Lista insertaInicio(String informacion)
 {
  Nodo nuevo;

  nuevo=new Nodo(informacion);
//crear un nuevo nodo(en la parte de enlace debe estar vacio, es decir null y en la parte de información el dato que le vamos a dar por ejemplo luis).CREA UN NUEVO NODO(ELEMENTO).
  nuevo.setEnlace(getInicio());
//en el campo de enlace nuevo se ingresa el valor que tenga inicio por ejemplo 0f10 ylo isertamos en el nuevo enlace.ENLAZA NUEVO AL FRENTE DE LA LISTA
  setInicio(nuevo);
//al nuevo nodo le ingresamos una direccion de memoria de tipo exagesimal es decir numero de cuatro digitos ejemplo:9412 y ese valor le ingresamos a inicio.MUEVE INICIO Y APUNTA EL NUEVO NODO
  return this;//DEVUELVE LA REFERENCIA DEL OBJETO.
 }
public Lista insertaFinal(String informacion)
 {
  Nodo ultimo;
  ultimo=inicio;
  while(ultimo.getEnlace()!=null)
  {
  ultimo=ultimo.getEnlace();
  }
  ultimo.setEnlace(new Nodo(informacion));
  return this;
 }
public Lista insertaAntes(String informacion, String ref)
 {
  Nodo nuevos,actual,anterior=null;
  boolean esta=true;
  actual=inicio;
  while(!actual.getInformacion().equals(ref)&&esta)
  {
  if(actual.getEnlace()!=null)
  {
  anterior=actual;
  actual=actual.getEnlace();
  }
  else
  {
  esta=false;
  }
  }
  if(esta)
  {
  if(inicio==actual)
  {
  nuevos=new Nodo (informacion,inicio);
  inicio=nuevos;
  }
  else
  {
  nuevos=new Nodo(informacion,actual);
    anterior.setEnlace(nuevos);
  }
  }
  return this;
 }
public Lista insertaDespues(String informacion,String ref)
{
    Nodo nuevo, actual=null;
    boolean esta=true;
    actual=inicio;
   while(actual.getInformacion().equals(ref)&& esta)
   {
       if(actual.getEnlace()!=null)
           actual=actual.getEnlace();
       else
  esta=false;
   }
    if(esta)
    {
  nuevo=new Nodo(informacion,actual.getEnlace());
  actual.setEnlace(nuevo);
}
return this;
}

public void recorrer() {

    String cadena="";
    Nodo q=inicio;
    int i=1;
    while(q!=null)
    {
    cadena+="\n nodos"+1+q.getInformacion();
    q=q.getEnlace();
    i++;
 }
JOptionPane.showMessageDialog(null,cadena);
}  
public String eliminaAlInicio()
     {

    Nodo x= inicio;
    inicio= inicio.getEnlace(); // Barrido logico
    return x.getInformacion();

         }

    public String eliminaFinal()
     {

    Nodo ultimo, anterior= null;
    ultimo= inicio; // Empieza el rrecorrido
    while (ultimo.getEnlace()!= null)
     {
    anterior= ultimo;
    ultimo= ultimo.getEnlace();

       }
    anterior.setEnlace(null); // Borrado logico
    return ultimo.getInformacion();
    }
    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.getEnlace());
  return actual.getInformacion();
  }
  else
  return"";
    }

public static void main(String[]args){
 Lista obj=new Lista();  
}   
       
}

conclusión

La conclusión que podemos dar de lista enlazada es fundamental, y esta puede ser usada para implementar otras estructuras de datos. Utilizamos nodos, en esta se guardan los datos anteriores o posteriores. La listas enlazadas permiten insertar y eliminar nodos en cualquier punto de la lista, pero no permiten un acceso aleatorio. Existen muchos tipos de listas enlazadas.



No hay comentarios.:

Publicar un comentario