02
Pilas en C#
Filed Under (Estructura de datos, c#, edgarantonio) by Edgar on 02-03-2010
Tagged Under : c#, estaticas, Estructura de datos, estructuras, lineales, pilas
Ahora dejare un ejemplo de Pilas codificado en C# en una aplicacion en consola.
Como sabemos para el manejo de pilas contamos con 4 metodos que son :
- Push: Insertar datos tomando en cuenta la capacidad de la pila.
- Pop: Eliminar datos, en el cual siempre se elimina el ultimo dato insertado.
- Recorrido: Es el despliege de datos con el cual recorreremos la pila desde el final hasta el principio.
- Busqueda: Localizacion de datos, por el el cual por medio de un recorrido realizamos la busqueda.
Para realizar estos metodos tenemos que definir ciertas variables globales como lo son TOP=-1 , MAX= tamaño de la pila, Pues bien para cada uno de estos metodos ya esta un algoritmo definido los cuales son los siguientes.
1.PUSH(insertar datos)
push(pila,top,max,elemento)
Si Top!= Max-1 Entonces
top<-top+1
pila[top]<-elemento
sino
imprimir “pila llena”
fin_si
fin_procedimiento
Y el codigo en C# seria asi.
<br />
public void push(int elemento)<br />
{<br />
if (top != max - 1)<br />
{<br />
top = top+ 1;<br />
pila[top] = elemento;<br />
}<br />
else<br />
{<br />
Console.Write("\n\nPila Llena");<br />
Console.ReadLine();<br />
}<br />
}<br />
2.Pop(eliminar datos)
pop(pila,top)
Si top!=-1 Entonces
Imprimir “El elemento”,pila[top],”sera eliminado de la pila”
pila[top]<-0
top<-top-1
Sino
Imprimir “La pila esta vacia”
Fin_Si
Fin_Procedimiento
El codigo en C# seria el siguiente:
</p>
<p>public void pop()<br />
{<br />
if (top != -1)<br />
{<br />
Console.WriteLine("\n\nEl Elemento: " + pila[top] + " Sera Elminado de la pila");<br />
pila[top]=0;<br />
top=top-1;<br />
}<br />
else<br />
{<br />
Console.WriteLine("\n\nLa Pila Esta vacia");<br />
}<br />
Console.ReadLine();<br />
}<br />
3.-Recorrido(desplegar datos)
Recorrido(pila,top)
si top!=-1 Entonces
apuntador<top
Repetir mientras apuntador!=-1
Imprimir”Elemento”,pila[apuntador],”Posicion”,apuntador
apuntador<-apuntador-1
Fin_Ciclo
Si_No
Imprimir”Pila vacia”
Fin_Si
Fin_Procedimiento
El codigo en C# seria el siguiente:
</p>
<p>public void recorrido()<br />
{<br />
if (top != -1)<br />
{<br />
int apuntador = top;<br />
do<br />
{<br />
Console.WriteLine("Elemento: " + pila[apuntador] + " Posicion: " + apuntador);<br />
apuntador = apuntador-1;<br />
} while (apuntador != -1);<br />
Console.ReadLine();<br />
}<br />
else<br />
{<br />
Console.WriteLine("\n\nPILA VACIA");<br />
Console.ReadLine();<br />
}<br />
}<br />
4.-Busqueda(localizar datos)
Busqueda(pila,top,elemento)
Si top!=-1
apuntador<-top
Repetir Mientras apuntador !=-1
Si pila[apuntador]=elemento Entonces
Imprimir”El dato”, elemento, “esta en la posicion”,apuntador
salir
Si_No
Apuntador<-Apuntador-1
Fin_Ciclo
Imprimir “El dato”,elemento, “No esta en la pila”
Si_No
Imprimir “La pila esta vacia”
Fin_Procedimiento
El codigo en C# es el siguiente:
</p>
<p>public void busqueda(int elemento)<br />
{<br />
if (top != -1)<br />
{<br />
int apuntador = top;<br />
while(apuntador != -1)<br />
{<br />
if (pila[apuntador] == elemento)<br />
{<br />
Console.WriteLine("\n\nEl dato: " + elemento + "\nEsta en la posicion: " + apuntador);<br />
Console.ReadLine();<br />
return;<br />
}<br />
else<br />
{<br />
apuntador = apuntador - 1;<br />
}<br />
}<br />
Console.WriteLine("\n\nEl dato: " + elemento + "\nNo esta en la pila");<br />
}<br />
else<br />
{<br />
Console.WriteLine("\n\nPILA VACIA");<br />
}<br />
Console.ReadLine();</p>
<p>}</p>
<p>
Recordemos que para esto debimos haber declarado nuestro arreglo global al igual que las variables Top y Max las cuales Top debe inicializarse en -1 y Max toma el valor del tamaño de nuestro arreglo, aqui yo recibo el tamaño del arreglo en el constructor.
<br />
int []pila;<br />
int top, max;<br />
public clasepila(int n)<br />
{<br />
pila = new int[n];<br />
top = -1;<br />
max = n;<br />
}<br />
Y el valor de n lo mando desde el Main
<br /> Console.Write("\n\nTAMAÑO DE LA PILA: ");<br /> int n = int.Parse(Console.ReadLine());<br /> clasepila obj = new clasepila(n);<br />
Espero les haya servido este ejemplo enseguida les dejo el codigo completo en C# para que lo descargen.

muy bueno este post bien explicado y todo
[...] del manejo de colas en C#, en este tipo de estructuras contamos igual con 4 metodos como en las pilas y las definiremos a [...]