martes, 26 de julio de 2011

matriz de objeto

Ejemplos para una matriz d objetos :
Obj M[][] = { {new String  (“Ana”), new String(“Peres”)},
                       {new String (“Jose”), new String(“Peres”);}
                   }
Obj Mi[][] = {{new Integer(2020),new String(“Ana”)}
                               {new Integer(4050), new String (“Paz”)}
                             }
CUBO:
Obj cubo[][][] = {{{new Integer(2050), new String (“Ana”), new String (“Peres”)}
                                {new Integer(4050), new String (“Jose”),new String (“Paz”) }}
                            }
For(int i=o; i <= cubo.lenght; i++ ){
      For(int j=o; j <= cubo.lenght; j++ ){
            For(int k=0 ; k<=cobo.lenght; k++){
             Mostrar(cubo[i] [j] [k]);
             }
       }
}
Ejemplo: Registrar los datos de los vendedores del supermercado X
-          Cod vendedor
-          Nom completo
-          Direccion
-          Fono



ESTRUCTURA DINÁMICA:

Dinámicas lineales.- tiene lo que se conoce:
Dinamicas no lineales

LA CLASE NODO:
Public class Nodo (object obj){
            This (oj,null);
}
 Public Nodo (object obj, Nodo sig){
                          Dato == obj;
                          Enlace == sig; //Enlazdo
}
Public get dato(){
                         Return dato;
}

LISTA ENLASADA

Para lista Vacia:
Class Nodo(){
         Obj dato;
          Nodo sig;
Public Nodo (objct obj){
           Dato =0;
           Sig = null;
}
}
Para lista no vacia:
Public class Nodo(object 0 , Nodo n){
             dato =0;
              sig = n;
 objct getdato(){
        return dato;
Nodo get enlace (){--}
}
}

v  Lista Enlasada: la lista enlasada es una E,D, dinamica, formada por el conjunto de nodos, conesctados a atravez de un enlace (sig) que esta  definida basiamente por nombre, un enlace al primer nodo (elemento) y un enlace de ultimo nodo (elemento).
Operaciones:
Lista enlazada:
v  Operacionesa:
Ø  Constructores
Ø  Lista vacias
Constructor
Public datos (String (n)){
          Nombre = n;
          Prim = ultm = null
}
Public boolean ListaVacia(){
Return (prim == null);
}

                                                                  Lista Vacia
                                            Frente           ~ Lista vacia
v  Inserciones        Posterior
                                    Pos-n

a.- Insertar frente
  Lista Vacia





















public class COLA {
    private Lista listaCola;
    public COLA(){
     listaCola = new Lista("cola");
    }
    public void encolar(Object objeto){
      listaCola.InsertarPosterior(objeto);
    }
   
    public Object decolar() throws CasoListavacia{
      return listaCola.eliminarDelFrente();
    }
    public boolean estaVacia(){
     return listaCola.estaVacia();
    }
    public void imprimir(){
     listaCola.imprimir();
    }
   
}

public class Lista {
       
    private Nodo pri;
    private Nodo ult;
    private String nombre;
       
    public Lista(){
        this("lista");
    }
    public Lista(String NLista){
        nombre = NLista;
        pri = ult = null;
    }

    public boolean estaVacia(){
        return pri == null;
    }
    public void insertarAlFrente(Object intElemento){
       
        if(estaVacia())
            pri = ult = new Nodo(intElemento);
        else
            pri = new Nodo(intElemento, pri);
    }
    public void InsertarPosterior(Object intElemento){
        
        if(estaVacia())
            pri = ult = new Nodo(intElemento);
        else
            ult= ult.sig = new Nodo(intElemento);
    }
    public Object eliminarDelFrente() throws CasoListavacia{
        if(estaVacia())
           
            throw new CasoListavacia(nombre);
           
        Object elementoEliminado = pri.datos;
       
        if(pri == ult)
            pri = ult = null;
        else
            pri = pri.sig;
        return elementoEliminado;
    }
    public Object eliminarDelFinal() throws CasoListavacia{
       
        if(estaVacia())
           
            throw new CasoListavacia(nombre);
           
        Object AeliminarElemento = ult.datos;
           
        if(pri == ult)
            pri = ult = null;
        else{
            Nodo actual = pri;
           
            
        while(actual.sig != ult)
            actual = actual.sig;
       
        ult = actual;
        actual.sig = null;
        }
       return AeliminarElemento;
    }
   
    public void imprimir(){
       
        if(estaVacia()){
            System.out.printf("%s Vacia\n", nombre);
        return;
    }
        System.out.printf("La %s es: ", nombre);
        Nodo actual = pri;
       
        while(actual != null){
            System.out.printf("%s ", actual.datos);
            actual = actual.sig;
        }
        System.out.println("\n");
    }

        public class CasoListavacia extends RuntimeException{
       
         public CasoListavacia(){
            this("lista");
        }
         public CasoListavacia(String nombre){
             super(nombre + "Esta Vacia");
         }
        
    }
 }


public class Nodo {
   
    //miembros de acceso del paquete; lista puede accseder a ellos directamento
    Object datos;//los datos para este nodo
    Nodo sig;//referencia al siguiente nodo de la lista
   
    //el constructor crea un objeto Nodo que hace referencia al objeto
    Nodo(Object objeto){
        this(objeto, null);
    }
    Nodo(Object intElemento, Nodo nodo){
        datos = intElemento;
        sig = nodo;
    }
    Object obtenerObject(){
        return datos;
    }
    Nodo obtenerSiguiente(){
        return sig;
    }
   
    }
    



public class Pila extends Lista{
   
    public Pila(){
        super("pila");
    }
    public void push(Object objeto){
        insertarAlFrente(objeto);
    }
    public Object pop() throws CasoListavacia{
        return eliminarDelFrente();
    }
   
}



public class listadobleCircular{
//datoscamigables para que la clase lista tenga un acceso directo
Object datos;
listadobleCircular siguiente;
//Constructor crea un nodo de tipo Object
listadobleCircular(Object valor){
datos=valor;
siguiente=null;
}
//Constructor Crea un nodo de tipo Object y al siguiente nodo de la lista
listadobleCircular (Object valor,listadobleCircular signodo){
datos=valor;
siguiente=signodo; //siguiente se refiere al siguiente nodo
}
//Retorna el dato que se encuentra en ese nodo
Object getObject(){
return datos;
}
//Retorna el siguiente nodo
listadobleCircular getnext(){
return siguiente;
}
}

//Definicion de la clase ListaCircular
class ListaCircular{
listadobleCircular PrimerNodo;
String Nombre;
                                                                                                                       
//Constructor construye una lista vacia con un nombre s
public boolean VaciaLista(){
return PrimerNodo==null;
}
                                                                                                                       
//Imprime el contenido de la lista
public void Imprimir(){
if (VaciaLista()){
System.out.println("Vacia" + Nombre);
}
else{
System.out.print("La "+Nombre + " es: ");
listadobleCircular Actual=PrimerNodo.siguiente;
System.out.print(PrimerNodo.datos.toString()+" ");
while(Actual != PrimerNodo){
System.out.print(Actual.datos.toString()+" ");
Actual=Actual.siguiente;
}
System.out.println();
System.out.println();
}
}
                                                                                                                       
//Constructor
public ListaCircular(String s){
Nombre=s;
PrimerNodo=null;
}
                                                                                                                       
//Constructor
public ListaCircular(){
this ("Lista");
}
                                                                                                                       
//Inserta un elemento al frente de la lista
void InsertaInicio(Object ElemInser){
if(VaciaLista()){
PrimerNodo=new listadobleCircular(ElemInser);
PrimerNodo.siguiente=PrimerNodo;
}
else{
listadobleCircular aux=PrimerNodo;
while(aux.siguiente != PrimerNodo)
aux=aux.siguiente;
listadobleCircular tempo=new listadobleCircular (ElemInser);
aux.siguiente=tempo;
tempo.siguiente=PrimerNodo;
PrimerNodo=tempo;
}
}
                                                                                                                       
//Inserta al final de la lista
public void InsertaFinal(Object ElemInser){
if(VaciaLista()){
PrimerNodo=new listadobleCircular (ElemInser);
PrimerNodo.siguiente=PrimerNodo;
}
else{
listadobleCircular aux=PrimerNodo;
while(aux.siguiente != PrimerNodo)
aux=aux.siguiente;
listadobleCircular tempo=new listadobleCircular(ElemInser);
aux.siguiente=tempo;
tempo.siguiente=PrimerNodo;
 }
}
                                                                                                                       
//Inserta elemento en posicion dada
public void InsertaMedio(Object ElemInser,int Posicion){
if(VaciaLista()){
PrimerNodo=new listadobleCircular (ElemInser);
PrimerNodo.siguiente=PrimerNodo;
}
else{
if(Posicion<=1){
listadobleCircular Nuevo=new listadobleCircular(ElemInser);
Nuevo.siguiente=PrimerNodo;
PrimerNodo=Nuevo;
}
else{
listadobleCircular Aux=PrimerNodo;
int i=2;
while((i != Posicion) & (Aux.siguiente != PrimerNodo)){
i++;
                                                                                                                                                                            Aux=Aux.siguiente;
                                                                                                                                                             }
                                                                                                                                                             listadobleCircular Nuevo=new listadobleCircular(ElemInser);
Nuevo.siguiente=Aux.siguiente;
Aux.siguiente=Nuevo;
}
}
}
//Elimina al Inicio
public void EliminaInicio(){
if(VaciaLista())
System.out.println("No hay elementos");
else{
listadobleCircular aux=PrimerNodo;
while(aux.siguiente != PrimerNodo)
aux=aux.siguiente;
PrimerNodo=PrimerNodo.siguiente;
aux.siguiente=PrimerNodo;
}
}//Elimina al Final
public void EliminaFinal(){
if(VaciaLista())
System.out.println("No hay elementos");
else{
listadobleCircular aux=PrimerNodo;
listadobleCircular ac=null;
if(PrimerNodo==PrimerNodo.siguiente){
PrimerNodo=null;
}
else{
while(aux.siguiente != PrimerNodo){
ac=aux;
aux=aux.siguiente;
}
ac.siguiente=PrimerNodo;
}
}
}
//Retorna si un elemento es miembro
public boolean Miembro(Object ele){
boolean enc=false;
if(!VaciaLista()){
listadobleCircular aux=PrimerNodo.siguiente;
if(ele.equals(PrimerNodo.datos))
enc=true;
else{
while((aux != PrimerNodo) && (enc==false)){
if(ele.equals(aux.datos)){
enc=true;
}
else{
aux=aux.siguiente;
}
}
}
}
return enc;
}
}


 

sábado, 23 de abril de 2011

LO IMPORTANTE PARA DECLARAR VECTOR

Lo que no se puede olvidar de vectores

Lo que un programador no puede olvidar de vectores es lo siguiente:
1.-Inicialización.
2.-Como ingresar datos
3.-Mostrar datos.
4.-Algoritmo:
                     -Ordenación
                     -Búsqueda

Inicializacion: lo mejor forma de inicializar un vector lo podemos hacer de la siguiente forma
                                 Int V[] = new int[n];

                                 Objeto[] = Objeto[n];

                                  Int  V[] = {2,9,7,8};  // esto es una denominación implícita


                                 Vector V2 = new vector(5);  //para esto se debe importar la librería importjava.util.vector;

                                 Int v3[]; //solo es preferencia no instancia.
2.- Ingresar datos: para poder ingresar datos podemos hacer de la siguiente manera:      
// introducir datos por teclado.

                  BufferedReader val=(new, BufferedReader(new ImputSheanReader(System.in) ));
                 int num= Integer.parseInt(val.Reader());
                  for(int i=0;vector < V.length;i++)
                        V[i] = Integer.parseInt(val.ReadLonec());


3.- Mostrar datos:
3.1.-Mostrar datos con la class vector
4.-Ordenacion:El algoritmo para ordenar


4.1.-Busqueda 
4.2.-Busqueda binaria
//solo puede cusarse cuando el vector esta ordenado y se utiliza tavien el objeto pivote

4.3.- Busqueda lineal Ej:

4.3.1.-otra forma mas fácil de búsqueda binaria

          Array.BinarySearch( V, elem);
   Matrizes
Una estructura de datos es una forma sistemática de organizar los datos y acceder a
ellos; ya hemos visto varias estructuras de datos simples en este curso (por ejemplo, los
arrays y los vectores). En esta sección (y en la siguiente clase adicional), le enseñaremos
a implementar algunas de las estructuras de datos tradicionales (Queue, Stack, Linked
List y Tree) con Java.
Biblioteca java.util
Antes del lanzamiento de la plataforma Java 2, la biblioteca java.util proporcionaba
un pequeño conjunto de clases para las estructuras de datos más útiles, como son
Vector, Stack y Hashtable:
La clase Vector implementa un array de objetos que crece con el tiempo. Al
igual que ocurre con un array, contiene componentes a los que se puede
acceder utilizando un índice integer. Sin embargo, el tamaño de un vector
puede crecer o reducirse tanto como sea necesario para poder agregar y
eliminar elementos una vez creado el vector.
La clase Stack representa una pila de objetos LIFO (el último en entrar es el
primero en salir). Proporciona un método de empuje para agregar un objeto en
la parte superior de la pila y un método de extracción para sacarlo.
Colas y pilas

En esta sección analizaremos algunos de los métodos de la clase Matrix tratados en el
material de clase.
La clase Matrix
matrices. Se utiliza sobre todo para preparar matrices para su uso en la resolución de
sistemas lineales. Consta de:
La clase Matrix es una clase de Java creada para representar y llenar
§
private double[ ][ ] data = new double[m][n];
int nrows = data.length;
int ncols = data[0].length;
Un array 2D de m filas por n columnas
§
multiplicación
Public Matrix addMatrices (Matrix b)
Public Matrix multMatrices (Matrix b)
Public void print ();
Métodos para operaciones con matrices, como la suma, la resta o la
Suma de matrices
Dos matrices (a y b) se pueden sumar sólo si tienen el mismo número de filas y
columnas. El resultado es una nueva matriz. La base del proceso de suma es:
c[i][j] = a[i][j] + b[i][j];
Éste es el código
Public Matrix addMatrices (Matrix b)
{
//La matriz resultante
Matrix result = new Matrix(nrows, ncols);
//Sólo se suman si tienen el mismo número de filas y de columnas
if (b.nrows == nrows && b.ncols == ncols)
{
for (int i=0; i<nrows; i++)
for (int j=0; j<ncols; j++)
result.data[i][j] = data[i][j] + b.data[i][j];
}
return result;
}
Producto de matrices
Métodos de matrices