nuestras visitas

Mostrando las entradas con la etiqueta LISTA. Mostrar todas las entradas
Mostrando las entradas con la etiqueta LISTA. Mostrar todas las entradas

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.