lunes, 16 de noviembre de 2015

PILAS DINÁMICAS

Pilas Dinámicas
Una pila al ser una lista puede almacenar en el campo de información cualquier tipo de valor (int, char, float, vector de caracteres, un objeto, etc). 

También se las llama listas LIFO (Last In First Out - último en entrar primero en salir) 
Existen dos tipos de pilas, la estática y la dinámica, la primera se hace a través de arreglos y la segunda por celdas. 
Para estudiar el mecanismo de utilización de una pila supondremos que en el campo de información almacena un entero (para una fácil interpretación y codificación) 
Inicialmente la PILA está vacía y decimos que el puntero raíz apunta a null. 
Aquí el código para una pila Dinámica en C Sharp. 


class Pila
{
private class celda
{
public object e; //Se declara un objeto "e" de clase publico
public celda sig; //Se declara un elemento siguiente de clase celda
public celda(object x, celda p) //constructor de la clase celda que recibe un objeto y la celda como parametro
{
e = x;
sig = p;
}
}
celda p; //Referecia de celda es de tipo privado
public Pila() //CONSTRUCTOR de la clase pila
{
p = null; //Que la pila este vacia se usa el NUll
}
public bool vacia() //metodo de como saver si la pila esta vacia
{
return p == null; //Como saber si la pila esta vacia
}
public void pop() //Metodo para elinminar el elemento
{
if(!vacia()) //si la pila no esta vacia. "!" Quiere decir "Si No" o "Negar" en c#
{
p=p.sig; //Continua hacial la otra celda
}
}
public object top() //Para recuperar el ultimo elemento que el pop elimino TOPE
{
if (!vacia()) //Si la pila ne esta vacia retorna un objeto anterior
{
return p.e; //retorna el elemento p
}
else
{
return null;
}
} //celda tiene que apuntar a donde apuntaba p se puede hacer cuando
public void push(object x)
{
p = new celda(x, p);
}

}
class Program //Clase program Esta clase lo puedes modificar a tu gusto.
{
static void Main(string[] args)
{
Pila p = new Pila();
for (int i = 0; i < 4; i++)
{
Console.WriteLine("Introduzca un elemento";);
p.push(Console.ReadLine());
}
for (int i = 0; i < 4; i++)
{
Console.WriteLine("Elemento {0} es {1}", i+1, p.top());
p.pop();
}
Console.ReadLine();
}
}

No hay comentarios:

Publicar un comentario