viernes, 23 de septiembre de 2011

Listas Circulares

Definicion

Una lista circular es una lista lineal en la que el último nodo a punta al primero.

-- Los tipos de datos que definiremos normalmente para manejar
listas son:


*tipoNodo: es el tipo para declarar nodos

*pNodo: declarar punteros a un nodo.



Operaciones basicas


Insertar elemento en la lista vacía

  • lista apunta a nodo.
  • lista->siguiente apunte a nodo.




Insertar elemento en una lista no vacía

1.Hacemos que nodo = siguiente apunte a lista = siguiente.
2.Después que lista = siguiente apunte a nodo.

Eliminar el único nodo de la lista.
1.lista = siguiente mientras lista = siguiente sea distinto de nodo.
2.Hacemos que lista = siguiente apunte a nodo = siguiente.
3.Eliminamos el nodo.










miércoles, 21 de septiembre de 2011

Wiki

En este codigo en Java se utilizan las funciones AddFirst,AddLast, removeFirst y removeLast

import java.util.LinkedList;

public class MainClass {
public static void main(String args[]) {

LinkedList ll = new LinkedList();

ll.add("B");
ll.add("C");
ll.add("D");
ll.add("E");
ll.add("F");
ll.addLast("Z"); // Funcion AddLast
ll.addFirst("A"); //Funcion AddFirst

ll.add(1, "A2");

System.out.println("Original contents of ll: " + ll);

ll.remove("F");
ll.remove(2);

System.out.println("Contents of ll after deletion: " + ll);

ll.removeFirst(); // Funcion RemoveFirst
ll.removeLast(); // Funcion RemoveLast

System.out.println("ll after deleting first and last: " + ll);

String val = ll.get(2);
ll.set(2, val + " Changed");

System.out.println("ll after change: " + ll);
}
}

domingo, 18 de septiembre de 2011

Listas


Una lista enlazada o encadenada es una colección de elementos ó nodos, en donde cada uno contiene datos y un enlace o liga.


Un nodo es una secuencia de caracteres en memoria dividida en campos (de cualquier tipo). Un nodo siempre contiene la dirección de memoria del siguiente nodo de información si este existe.


Un apuntador es la dirección de memoria de un nodo


La figura siguiente muestra la estructura de un nodo:



El campo liga, que es de tipo puntero, es el que se usa para establecer la liga con el siguiente nodo de la lista. Si el nodo fuera el último, este campo recibe como valor NIL (vacío).


A continuación se muestra el esquema de una lista :




Operaciones de Listas Enlazadas



  • Recorrido. Esta operación consiste en visitar cada uno de los nodos que forman la lista . Para recorrer todos los nodos de la lista, se comienza con el primero, se toma el valor del campo liga para avanzar al segundo nodo, el campo liga de este nodo nos dará la dirección del tercer nodo, y así sucesivamente.



  • Inserción. Esta operación consiste en agregar un nuevo nodo a la lista. Para esta operación se pueden considerar tres casos:

    • Insertar un nodo al inicio.

    • Insertar un nodo antes o después de cierto nodo.

    • Insertar un nodo al final.

  • Borrado. La operación de borrado consiste en quitar un nodo de la lista, redefiniendo las ligas que correspondan. Se pueden presentar cuatro casos:

    • Eliminar el primer nodo.

    • Eliminar el último nodo.

    • Eliminar un nodo con cierta información.

    • Eliminar el nodo anterior o posterior al nodo cierta con información.

  • Búsqueda. Esta operación consiste en visitar cada uno de los nodos, tomando al campo liga como puntero al siguiente nodo a visitar.




martes, 6 de septiembre de 2011

El factorial de un numero con Recursividad

En este codigo en C# resuelve el factorial de un numero por ejemplo usaremos el numero "4"

------------------------------------------------------
class Program
{
static void Main(string[] args)
{
Recursividad re = new Recursividad();
int f = re.Factorial(4); // aqui se encuentra el numero 4que le sacaremos el factorial
Console.WriteLine("El factorial de 4 es " + f);
Console.ReadKey();

}

public class Recursividad
{

public int Factorial(int fact) // metodo Factorial
{
if (fact > 0)
{
int valor = fact * Factorial(fact - 1); // Llamada del metodo Factorial
return valor;
}
else
return 1;
}

}


}


-----------------------------------------------------





Fuente
http://www.csharpya.com.ar/detalleconcepto.php?codigo=175&inicio=40

jueves, 1 de septiembre de 2011

Recursividad

La recursividad es una técnica importante de programación que permite que una función se llame a sí misma.

Algunas aplicaciones de la Recursividad seriam Las torres de Hanoi, Fibonacci , el Factorial de un numero.



Como ejemplo útil se puede presentar el cálculo de números factoriales. El factorial de 0 está definido específicamente como 1. El factorial de n, un entero mayor que 0, es el producto de todos los enteros del intervalo comprendido entre 1 y n.









El siguiente párrafo muestra una función, expresada con palabras, que calcula un factorial.


"Si el número es menor que cero, se rechaza. Si no es un entero, se rechaza. Si el número es cero, su factorial es uno. Si el número es mayor que cero, se multiplica por el factorial del número menor inmediato".







http://www.youtube.com/watch?v=Ri2eO8G4FNo