viernes, 13 de diciembre de 2013

Listas


= LISTAS=

Una lista es una estructura de datos homogénea y dinámica, que va a estar formada por una secuencia de elementos, donde cada uno de ellos va seguido de otro o de ninguno.
Homogénea: Todos los elementos que la forman o tienen el mismo tipo base.
Dinámica: Puede crecer o decrecer en tiempo de ejecución según nuestras necesidades. Dos listas pueden ser diferentes si:
No tienen el mismo número de elementos.

Operaciones basicas de Listas:

  • Añadir o insertar elementos
  • Buscar o localizar elementos
  • Borrar Elementos
  • Moverse a través de una lista  anterior, siguiente, primero.
Enseguida les mostrare el código de una como hacer un programa sobre listas.

* Programa para llevar acabo una Lista *


=Diagrama UML=



Como se darán cuenta seguiremos utilizando la clase Nodo y crearemos una clase llamada Lista con sus atributos y procesos a realizar.



package Dicknersito; // nombre de nuestro paquete

import javax.swing.JOptionPane;

public class Lista // nombre de nuestra clase
{
   private Nodo inicio;

   Lista()
{
       inicio=null;
   }

    public Nodo getInicio() 
{
        return inicio;
    }

    public void setInicio(Nodo inicio) 
{
        this.inicio = inicio;
    }
   public Lista InsertarInicio(String informacion)
{
   Nodo nuevo;
   nuevo= new Nodo(informacion); // quiere decir crear nuevo nodo o elemento

   nuevo.setEnlace(getInicio()); //aquí quiere decir enlazar 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 dirección del nodo siguiente
     }
     ultimo.setEnlace(new Nodo (informacion)); //se crea el nuevo nodo después del ultimo
     return this;
   }

public Lista InsertarAntes(String nombre, String ref) //aquí se utilizan parámetros
{
       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); //constructor
               inicio=nuevo;
           }

           else
{
               nuevo=new Nodo(nombre, actual); //constructor
               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  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 " ";
  }
}


NOTA:

Como se han de dar cuenta aparecen mucho la palabra Get y Set en breve les daré una pequeña explicación del por que aparecen mucho.

Get es un método que tiene un tipo de retorno que se relaciona con el tipo de variable miembro asociada. Los métodos get generalmente no toma ningún parámetro.

Set igual es un Método que tiene un tipo de retorno "void" y toma un parámetro del tipo adecuado para asignar a la variable miembro asociada.

Otra nota es que tambien aparece equals  se han de preguntar para que sirve o que es lo que hace, bueno equals al igual que Get y Set es un Método el cual sirve para comparar ya sea 2 cadenas o 2 String.

Existen dos tipos de borrados: lógico y físico.

Publicado por: Dickner Steven Barrios & Yenifer Mina Castillo










No hay comentarios:

Publicar un comentario