nuestras visitas

jueves, 12 de diciembre de 2013

 COLAS

Una cola representa una estructura lineal.
Una cola es una lista de elementos en la que estos se introducen por un extremo y se eliminan por el otro. Los elementos se eliminan en el mismo orden en el que se insertaron. Por lo tanto el primer elemento que entra a la cola será el primero en salir. Debido a esta característica, las colas también reciben el nombre de estructuras FIFO (FIRST-IN, FIRST-OUT: primero en entrar, primero en salir).
Existen numerosos casos de colas en la vida real: por ejemplo, las personas que esperan para ser atendidas en la caja de un banco (la primera persona de la cola será la primera en ser atendida).




colas 




package NodosColas;
import javax.swing.JOptionPane;
public class Cola
{
 private nodos frente;
    private nodos fin;

    public nodos getFrente() {
        return frente;
    }

    /**
     * @param frente the frente to set
     */
    public void setFrente(nodos frente) {
        this.frente = frente;
    }

    public nodos getFin() {
        return fin;
    }

    /**
     * @param fin the fin to set
     */
    public void setFin(nodos fin) {
        this.fin = fin;
    }
    Cola(){
    frente=null;
    fin=null;
    }
    public nodos inserta(String x){
    nodos nuevo=new nodos(x);
    if((frente==null)&&(fin==null)){
    fin=nuevo;
    }else{
    fin.setEnlace(nuevo);
    fin=nuevo;
    }
    return fin;
    }

    public String elimina(){
    nodos x=frente;
    if(frente==fin){
    frente=null;
    fin=null;
    }else{
    frente=frente.getEnlace();
    }
    return x.getInformacion();
    } 
     public static void main(String []args)
     {
     Cola objeto=new Cola();
     objeto.setFin(objeto.inserta(""));
     objeto.setFin(objeto.inserta(""));
     JOptionPane.showMessageDialog(null,"el dato eliminado es: \n  "+objeto.frente);
     
     JOptionPane.showMessageDialog(null,"el dato eliminado es:  \n "+ objeto.frente);
     
     }  
}

                                   Nodos colas




package NodosColas;
public class nodos 
{
private String informacion;
    private nodos enlace;
    
     public nodos(String x)
  {
     informacion=x;
     enlace= null; 
 }       
public nodos (String x, nodos n)
   {
   informacion=x;
   enlace=n;
 }     
     
    public String getInformacion() {
        return informacion;
    }

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

    public nodos getEnlace() {
        return enlace;
    }

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



CONCLUSION


Una cola es un TDA dedicado al almacenamiento y manipulación de elementos. Cuando usamos una cola el primer elemento en entrar será el primero en salir, están diseñadas para manejar y mantener directamente su orden de llegada y poseen un punto de acceso y otro de salida que lógicamente están  ubicados en extremos opuestos esto quiere decir que siempre vemos el elemento que está al frente.
Sus acciones son crear, destruir, agregar, extraer y ver.
Usamos las colas en toda aquella organización donde el primero que llegue sea el primero en irse.



NODOS CORRESPONDIENTES A ARBOLES

                                       NODOS CORRESPONDIENTES A ARBOLES                                       

Los arboles representan las estructuras no lineales y dinámicas de datos más importantes en computación. Dinámicas puesto que la estructura árbol puede cambiar durante la ejecución de un programa. No lineales, puesto que a cada elemento del árbol puede seguirlo varios elementos.


CARACTERÍSTICAS Y PROPIEDADES DE LOS ARBOLES EN GENERAL:

*      Todo árbol no es vacío, tiene un único nodo raíz.
*      Un nodo X es descendiente directo de un nodo y, si el nodo X es apuntado pro el nodo Y. en este caso es común utilizar X es hijo de Y.
*      Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta al nodo y. en este caso es común utilizar x es el padre de y.
*      Se dice que todos los nodos son descendientes directos (hijos) de un mismo nodo (padre), son hermanos.
*      Todo nodo no tiene ramificaciones (hijos), se conoce con el nombre de terminal u hoja.

*      Todo nodo que no es raíz, ni terminal u hoja se conoce con el nombre de interior.
a  
    A continuación presentaremos los diagramas de UML, para la clase árbol y para el nodo árbol



             PROGRAMACIÓN DE LA CLASE ÁrbolBinario EN JAVA           



public class ArbolBinario
{
 private int informacion;
 private ArbolBinario der;
 private ArbolBinario Izq;
//Constructores de la clase//...
 ArbolBinario()
 {
     Izq=null;
     der=null;
 }
 ArbolBinario(int x)
 {
 informacion=x;
 Izq=null;
 der=null;
 }
    /**
     * @return the informacion
     */
    public int getInformacion() {
        return informacion;
    }

    /**
     * @param informacion the informacion to set
     */
    public void setInformacion(int informacion) {
        this.informacion = informacion;
    }

    public ArbolBinario getDer() {
        return der;
    }

    /**
     * @param der the der to set
     */
    public void setDer(ArbolBinario der) {
        this.der = der;
    }

    /**
     * @return the Izq
     */
    public ArbolBinario getIzq() {
        return Izq;
    }

    /**
     * @param Izq the Izq to set
     */
    public void setIzq(ArbolBinario Izq) {
        this.Izq = Izq;
    }}





                                                       CLASE ÁRBOL                                   

package ArbolBusqueda;

public class Arbol 
{
 private ArbolBinario raiz;
//CONSTRUCTOR DE LA CLASE...
Arbol(){
raiz=null;    
}
public ArbolBinario getraiz(){
    return raiz;
}
public void setraiz(ArbolBinario x){
    raiz=x;
}
//METODO RECURSIVO, R ES LA RAIZ, DATO ES EL VALOR A INSERTAR
public ArbolBinario Insertar(ArbolBinario r, int dato)
{
 if(r==null){
     //CREAMOS EL NODO QUE VAMOS A INSERTAR...
     r= new ArbolBinario(dato);
 else{

  if(dato  < r.getInformacion()){
  r.setIzq(Insertar(r.getIzq(), dato));
  }
   else{
   r.setDer(Insertar(r.getDer(), dato));
  }
         
}
 return r;
}

 public String inOrden(ArbolBinario r)
     {
     String cadena=new String();
     if(r!=null){
      
      cadena=cadena + inOrden(r.getIzq());
      cadena=cadena + String.valueOf(r.getInformacion()+"  ");  
      cadena=cadena + inOrden(r.getDer());  
     }
     return cadena;
     }
 public String preOrden(ArbolBinario r)
 {
 String cadena=new String();
 if(r!=null){
 cadena=cadena + String.valueOf(r.getInformacion()+"  ");
 cadena=cadena + preOrden(r.getIzq());
 cadena=cadena + preOrden(r.getDer());
 }
 return cadena;
 }

 public String postOrden(ArbolBinario r)
 {
 String cadena=new String();
 if(r!=null){

 cadena=cadena + postOrden(r.getIzq());
 cadena=cadena + postOrden(r.getDer());
 cadena=cadena + String.valueOf(r.getInformacion()+"  ");
 }
 return cadena;
 }
}









                             CLASE PruebaArbol                              

package ArbolBusqueda;
import javax.swing.JOptionPane;
public class PruebaArboL {

public static void main(String []arg)
{
Arbol x;
x=new Arbol();
x.setraiz(x.Insertar(x.getraiz(),50));
x.setraiz(x.Insertar(x.getraiz(),150));
x.setraiz(x.Insertar(x.getraiz(),250));
x.setraiz(x.Insertar(x.getraiz(),30));
x.setraiz(x.Insertar(x.getraiz(),40));
x.setraiz(x.Insertar(x.getraiz(),55));
x.setraiz(x.Insertar(x.getraiz(),75));
x.setraiz(x.Insertar(x.getraiz(),10));
x.setraiz(x.Insertar(x.getraiz(),110));
x.setraiz(x.Insertar(x.getraiz(),88));
x.setraiz(x.Insertar(x.getraiz(),03));
x.setraiz(x.Insertar(x.getraiz(),42));
x.setraiz(x.Insertar(x.getraiz(),9));
x.setraiz(x.Insertar(x.getraiz(),15));
x.setraiz(x.Insertar(x.getraiz(),96));

JOptionPane.showMessageDialog(null,"el recorrido del arbol en inorden es:  \n  "+ x.inOrden(x.getraiz()));
JOptionPane.showMessageDialog(null,"el recorrido del arbol en preorden es:  \n  "+ x.preOrden(x.getraiz()));
JOptionPane.showMessageDialog(null,"el recorrido del arbol en postorden es:  \n  "+ x.postOrden(x.getraiz()));

}
}






            CONCLUSIÓN        

Llegamos a la conclusión que el concepto de árbol implica una estructura en la que los datos se organizan 
de modo que los elementos de información están relacionados entre sí a través de ramas. 
Un árbol consta de un conjunto finito de elementos, llamados nodos y de un conjunto finito de 
líneas dirigidas, llamadas ramas que conectan los nodos. 
Un árbol es un conjunto de uno o más nodos tales que: hay un nodo especial llamado raíz y los 
restantes se dividen en n ≥ 0 conjuntos disjuntos tal que cada uno de estos conjuntos es un árbol 
y se los conoce como árboles. 






miércoles, 11 de diciembre de 2013

PILAS

PILAS







UNA PILA 
es una lista ordenada o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura.




public class Nodos
{
private String informacion;
    private Nodos enlace;
    
     public Nodos(String x)
  {
     informacion=x;
     enlace= null; 
 }       
public Nodos (String x, Nodos n)
   {
   informacion=x;
   enlace=n;
 }     
     
    public String getInformacion() {
        return informacion;
    }

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

    public Nodos getEnlace() {
        return enlace;
    }

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


import javax.swing.JOptionPane;
public class Pilas 
{
private Nodos tope;

    /**
     * @return the tope
     */
    public Nodos getTope() {
        return tope;
    }

    /**
     * @param tope the tope to set
     */
    public void setTope(Nodos tope) {
        this.tope = tope;
    }
    public Pilas Push(String informacion)
    {
    Nodos nuevo;

     nuevo= new Nodos(informacion); // crea un nuevo NODO (elemento)
     nuevo.setEnlace(getTope()); // enlaza nuevo al frente de la lista
     setTope(nuevo); // mueve inicio y apunta al nuevo nodo
    return this; 

        
    }
    public String Pop(){
      
    Nodos x= tope;
    tope= tope.getEnlace(); // Barrido logico
    
    return x.getInformacion();                 
    }
    
    public static void main(String []args)
    {
     Pilas objeto=new Pilas(); 
     
     objeto.Push("Ana");
     objeto.Push("Carlos");
     JOptionPane.showMessageDialog(null, objeto.Pop());
     objeto.Push("Ana 2");
     objeto.Push("Carlos 3");
     JOptionPane.showMessageDialog(null, objeto.Pop());
    }
        
}

CONCLUSIÓN

Aprendimos que las pilas permiten guardar información de acuerdo al orden que esta llega. En una pila siempre se sabe dónde insertar y extraer datos. Cuando utilizamos pilas el último elemento en entrar será el primero en salir, sus funciones son crear, vaciar, agregar, extraer y ver.se le llama pila vacía cuando la estructura no contiene elementos y pila llena cuando no hay más lugar para almacenar elementos. Cuando agregamos elementos siempre y cuando la pila no esté llena se le conoce como push, y cuando se extrae un elemento insertado y desapilarlo siempre y cuando la pila este vacía se conoce como pop (desapilarlo).también podemos ver el elemento que está en la parte superior de la pila a esto se le llama ver tope.









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.