domingo, 25 de septiembre de 2011

Una lista enlazada es un conjunto ordenado de datos, y utilizando la clase base List ...

Clase List
La clase List proporciona un área desplegable que contiene ítems seleccionables (uno por línea). Generalmente, un usuario selecciona una opción pulsando sobre ella, e indica que una acción debe ocurrir cuando hace doble-click sobre ella o pulsa la tecla Return. Las Listas (Lists) pueden permitir múltiples selecciones o sólo una selección a la vez. Otros componentes que pérmiten al usuario elegir entre varias opciones son checkbox, choice, y menu.
CheckBox: permite seleccionar una opción al usuario del programa o tomar una decisión, directamente en pantalla.
choice: permiten el rápido acceso a una lista de elementos. Por ejemplo, podríamos implementar una selección de colores y mantenerla en un botón Choice.

Linkedlist
La clase linkedlist proporciona métodos para obtener de manera uniforme el nombre, eliminar e insertar un elemento al principio y al final de la lista. Estas operaciones permiten a las listas enlazadas para ser utilizado como una pila, una cola o de dos extremos de la cola.

Arraylist
Es una objeto lista que implemente la interfaz Collection de java. Esta clase permite contener y ordenar objetos, incluso, puede almacenar objetos dupicados. Su tamaño es dinámico, es decir, esta lista crecera a medida que se inserten en ella mas elementos. Debememos recordar que el índice de un ArrayList empieza en 0, es decir, el primer elemento del ArrayList tiene como índice el 0

Nota: Los objetos ArrayList se comportan igual que un objeto Vector desincronizado, por lo tanto, un ArrayList se ejecuta mas rápido que un Vector, ya que el ArrayList no tiene que implementar los métodos de sincronización de procesos.

Un ArrayList contiene tantos objetos como necesitemos.
ArrayList tiene varios constructores, dependiendo de cómo necesitemos construir el ArrayList . Los siguientes dos constructores nos ayudarán a empezar:
ArrayList() construye un ArrayList con capacidad cero por defecto, pero crecerá según le vayamos añadiendo:
 ArrayList al = new ArrayList();
ArrayList(int initialCapacity) construye un ArrayList vacío con una capacidad inicial especificada:
 ArrayList al2 = new ArrayList(5);

Iterator
Un Iterator o Iterador es un patrón de diseño que nos ofrece una interfaz estándar para recorrer una estructura de datos sin que nos tengamos que preocupar por la representación interna de los datos de dicha estructura.
Esta forma de recorrer estructuras de datos ofrece muchas ventajas entre las que podemos destacar que nuestro código no depende de la estructura de datos.
Por lo tanto la “estructura” puede ser un árbol binario o una lista doblemente enlazada ya que el iterador nos abstrae del modo de realizar el recorrido. De este modo podemos sustituir de manera sencilla estructuras de datos en nuestro código sin que se nos presenten problemas desagradables.

Este patrón lo podemos sustituir por un bucle for, que haría básicamente lo mismo, pero la velocidad en la búsqueda es superior en el patrón iterator con respecto al bucle for.
En Java tenemos reflejado el patrón Iterator en la clase java.util.Iterator que es ampliamente utilizada en las conocidas Collections.

viernes, 23 de septiembre de 2011

Listas Circulares

Definición:        
Una lista circular es una lista lineal en la que el último nodo a punta al primero.
No existen casos especiales, cada nodo siempre tiene uno anterior y uno siguiente.
Se representa:

 Operaciones básicas
Mostrar:
A la hora de buscar elementos en una lista circular, es necesario almacenar el puntero del nodo en que se empezó la búsqueda, para poder detectar el caso en que no exista el valor que se busca. Por lo demás, la búsqueda es igual que en el caso de las listas abiertas.
Inserción por la cabeza de lista enlazada 
 1. Crear un nuevo nodo. 
 2. Almacenar el dato en el campo correspondiente (datos). 
 3. Como va a ser el primer nodo, su enlace deberá apuntar al que hasta ahora era el primer nodo (apuntado por el enlace externo). 
 4. El enlace externo deberá apuntar al nuevo nodo (que ahora es el primero). 

Eliminacion 
Para ésta operación podemos encontrar tres casos diferentes:

• Eliminar un nodo cualquiera, que no sea el apuntado por lista. 
• Eliminar el nodo apuntado por lista, y que no sea el único nodo.
• Eliminar el único nodo de la lista.
  
eliminar un nodo en una lista circular con mas de  un elemento 

En el primer caso necesitamos localizar el nodo anterior al que queremos borrar. Como el principio de la lista puede ser cualquier nodo, haremos que sea precisamente lista quien apunte al nodo anterior al que queremos eliminar. 
Esto elimina la excepción del segundo caso, ya que lista nunca será el nodo a eliminar, salvo que sea el único nodo de la lista.
Una vez localizado el nodo anterior y apuntado por lista, hacemos que lista->siguiente apunte a nodo->siguiente.
Y a continuación borramos nodo. 

En el caso de que sólo exista un nodo, será imposible localizar el nodo anterior, así que simplemente eliminaremos el nodo, y haremos que lista valga NULL.

Tipos de listas
          Listas enlazadas circulares simples.
          Listas enlazada doblemente circular.

Listas enlazadas circulares simples.
Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del ultimo apunta al primero.

 

 Listas enlazada doblemente circular.
En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, las insercciones y eliminaciones se realizan desde cualquier punto.
                                                                                                                                       

LISTAS ENLAZADAS

Lista enlazada
Definicion
La lista enlazada es un TDA que nos permite almacenar datos de una forma organizada, al igual que los vectores pero, a diferencia de estos, esta estructura es dinámica, por lo que no tenemos que saber "a priori" los elementos que puede contener.
En una lista enlazada, cada elemento apunta al siguiente excepto el último que no tiene sucesor y el valor del enlace es null. Por ello los elementos son registros que contienen el dato a almacenar y un enlace al siguiente elemento. Los elementos de una lista, suelen recibir también el nombre de nodos de la lista.

struct lista {
gint dato;
lista *siguiente;
};

se representa: 

caracteristicas 
1- La lista debe estar ordenada.
2- A diferencia de las pilas y las colas se pueden extraer e insertar elementos en cualquier parte de la lista.
Para que esta estructura sea un TDA lista enlazada, debe tener unos operadores asociados que permitan la manipulación de los datos que contiene. Los operadores básicos de una lista enlazada son:
Insertar: inserta un nodo con dato x en la lista, pudiendo realizarse esta inserción al principio o final de la lista o bien en orden.
Eliminar: elimina un nodo de la lista, puede ser según la posición o por el dato.
Buscar: busca un elemento en la lista.  
Localizar: obtiene la posición del nodo en la lista.
Vaciar: borra todos los elementos de la lista

LISTAS CIRCULARES...........

sábado, 10 de septiembre de 2011

ejemplo de recursividad en java

 ejemplo de recursion indirecta para saber si un numero es par o impar :

import java.io.*;

public class RecursionIndirecta{

public static BufferedReader entrada=new BufferedReader (new InputStreamReader(System.in));
public static void main (String[ ] args)throws IOException{
System.out.println("\n");
System.out.print("escriba el numero para saber si es par o impar: ");
int n = Integer.parseInt(entrada.readLine());
boolean EsPar = Es_par(n);
if (EsPar == true){
System.out.println("\nEl numero “+n+” es par");
}
if (EsPar == false){
System.out.println("\nEl numero “+n+” es impar");
}
}
public static boolean Es_par(int n){
if (n==0){
return true;
}else{
return impar(n-1);}
}
public static boolean impar(int n ){
if ( n==0 ){
return false;
}else{
return Es_par(n-1);}
}
}

viernes, 2 de septiembre de 2011

Recursividad Vs Iteraccion

http://es.scribd.com/doc/23026343/RECURSIVIDAD
http://es.scribd.com/doc/49712840/52/Ventajas-de-la-recursividad
http://elvex.ugr.es/decsai/c/apuntes/recursividad.pdf