jueves, 9 de abril de 2015

INSERTAR 

Insertar al inicio (Nodo simple)


Código en java  para un nodo simple :

public class Nodo <T>{ 
private T dato;
private Nodo sig;
    public Nodo(T d, Nodo s) {
     dato = d;
     sig = s;
    }
    public void setSig(Nodo s){
     sig = s;
    }
    public Nodo getSig(){
     return sig;
    }
    public T getDato(){
     return dato;
    }
}

para insertar un nodo al inicio de la lista enlazada SIMPLE, la instrucción java es la siguiente:
---------------------------
p = new Nodo(dato,siguiente);
-------------------------------------

p = new Nodo(d,p); (se crea el nodo)

Resultado:


Insertar al inicio (Nodo doble)



Código en java  para un nodo doble :

public class Nodo <T>{ 
private T dato;
 private Nodo sig;
  private Nodo ant;
   public Nodo(T d, Nodo sig, Nodo ant) {
     dato = d;
     this.sig = sig;
     this.ant=ant;
    }
    public void setSig(Nodo sig){
     this.sig = sig;
    }
    public Nodo getSig(){
     return sig;
    }
    public void setAnt(Nodo ant){
     this.ant = ant;
    }
    public Nodo getAnt(){
     return ant;
    }
    public T getDato(){
     return dato;
    }
}

para insertar un nodo al inicio de la lista enlazada DOBLE, la instrucción java es la siguiente:

--------------------------------------
p = new NodoDoble(dato,anterior,siguiente);
-------------------------------------------------

p = new NodoDoble(d,null,p); (se crea el nodo)

Resultado:




TIPOS DE LISTAS ENLAZADAS




OPERACIONES EN LISTAS ENLAZADAS

  • Insertar: al inicio, al final.
  • Eliminar:al inicio, al final
  • Buscar para: insertar antes, insertar después, eliminar
  • Listar
    Nota: Al insertar lo primero que se debe hacer es crear el nodo.

¿Que aprendí?....¿?

  • Existen diferentes tipos de listas enlazadas.
  • Al insertar, primero se debe crear el nodo

¿QUE SON LAS LISTAS ENLAZADAS?

Son estructuras dinámicas compuestas por un conjunto de Nodos enlazados con una referencia al nodo inicial cada nodo esta compuesto por un atributo referencia dato y un atributo referencia nodo siguiente. El ultimo nodo de la lista enlazada tiene un valor null en el atributo de referencia al nodo siguiente que indica el fin de la lista.

La idea es que cada componente de la lista incluya un puntero (dirección) que indique donde puede encontrarse el siguiente componente.




EJEMPLO:

 Hay tres nodos creados, y queremos imprimir por pantalla el nombre del tercer estudiante

 Nota: estudiantes es una variable de referencia que almacena la dirección del primer nodo.
Para ello debemos crear las clases Nodo (donde estan el dato y la dirección del siguiente nodo) y Estudiante (donde se encuentran los campos del estudiante).

public class Nodo <T>{ 
private T dato;
private Nodo sig;
    public Nodo(T d, Nodo s) {
     dato = d;
     sig = s;
    }
    public void setSig(Nodo s){
     sig = s;
    }
    public Nodo getSig(){
     return sig;
    }
    public T getDato(){
     return dato;
    }
}

//Estudiante
public class Estudiante { 
private String cod;
private String nom;
 private String prg;
    public Nodo(String cod, String nom,String prg) {
     this.cod = cod;
     this.nom = nom;
     this.prg = prg;
    }

    public void setCod(String cod){
     this.cod=cod;
    }
        
    public void setNom(String nom){
     this.nom=nom;
    }
   
   public void setNom(String prg){
     this.prg=prg;
    }

    public String getCod(){
     return cod;
    }

   public String getNom(){
     return nom;
    }
    
   public String getPrg(){
     return prg;
    }
  
}

Luego si queremos imprimir el nombre del tercer estudiante, la instrucción java seria la siguiente:

System.out.print(p.getSig().getSig().getDato().getNom());

La cual imprime el nombre del tercer estudiante que en este caso sería Alejandra Lopez.


-Para imprimir todos los estudiantes con su código y nombre sería:

Nodo p = estudiantes;

while(p != null){
System.out.print(p.getDato.getCod());
System.out.print(p.getDato.getNom());
p=p.getSig();
}



Ventajas y Desventajas:




ESTRUCTURAS DINÁMICAS

Clases autoreferenciadas (Nodos).




EJERCICIO: Corregir el siguiente código para que funcione correctamente

public void Principal{
 public static void main(Sring[] args){

 Fraccionario fs[];
 fs=3/4;
 fs[1].setNum(7);
 fs[1].setDen(9);

 System.out.print(fs);

 }
}

SOLUCIÓN:

Fraccionario fs[];
fs=new Fraccionario[5];

fs[1]=new Fraccionario();
fs[1].setNum(7);
fs[1].setDen(9);

System.out.print(fs);


¿Qué aprendí?.....¿?

  • fs[ ] almacena la dirección del cuerpo del vector en la memoria, es decir, toda variable arreglo guarda la dirección del objeto vector.
  • new  es un operador java que gestiona la creación de objeto.
  • Las variables de referencia guardan direcciones en memoria (se crean en la parte estática de la memoria).
  • Las estructuras estáticas(como los arreglos) son aquellas que después de definir su tamaño, éste no se le puede modificar.
  • Las estructuras dinamicas son clases que se auto referencian.



En esta clase se propuso el siguiente ejercicio:

public class Principal{
  public static void main(String[] args){
  Fraccionario f1, f2, f3;
  f1 = new Fraccionario();
  f2 = f1;  // Se le asigna el valor de f1 a f2, es decir, la variable f2 apunta a la misma dirección de f1. 
  f2.setNum(3);  
  f3=f2;
  f3.setDen(4) 

  System.out.print(f1.getNum+"/"+f1.getDen);   3/4
  System.out.print(f2.getNum+"/"+f2.getDen);   3/4
  System.out.print(f3.getNum+"/"+f3.getDen);   3/4

  }
}

ANÁLISIS

Las tres veces que se imprime muestra 3/4, ya que al crear el objeto f1 = new Fraccionario, en la variable de referencia se almacena la dirección de memoria del objeto.Cuando se iguala f2 a f1 (f2=f1), al igual que f3 = f2, se hace que las 3 variables apunten al mismo objeto Fraccionario (f1).


domingo, 5 de abril de 2015

Estas son las actividades que se llevarán a cabo en el semestre: 

Actividades que se realizaran en el semestre
    REQUISITOS
  • Lógica de programación
  • Conocimiento y manejo del lenguaje java
  • Programación orientada a objetos