Pilas en C#

Filed Under (Estructura de datos, c#, edgarantonio) by Edgar on 02-03-2010

Tagged Under : , , , , ,

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(&quot;\n\nPila Llena&quot;);<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(&quot;\n\nEl Elemento: &quot; + pila[top] + &quot; Sera Elminado de la pila&quot;);<br />
 pila[top]=0;<br />
 top=top-1;<br />
 }<br />
 else<br />
 {<br />
 Console.WriteLine(&quot;\n\nLa Pila Esta vacia&quot;);<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(&quot;Elemento: &quot; + pila[apuntador] + &quot; Posicion: &quot; + apuntador);<br />
 apuntador = apuntador-1;<br />
 } while (apuntador != -1);<br />
 Console.ReadLine();<br />
 }<br />
 else<br />
 {<br />
 Console.WriteLine(&quot;\n\nPILA VACIA&quot;);<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(&quot;\n\nEl dato: &quot; + elemento + &quot;\nEsta en la posicion: &quot; + apuntador);<br />
 Console.ReadLine();<br />
 return;<br />
 }<br />
 else<br />
 {<br />
 apuntador = apuntador - 1;<br />
 }<br />
 }<br />
 Console.WriteLine(&quot;\n\nEl dato: &quot; + elemento + &quot;\nNo esta en la pila&quot;);<br />
 }<br />
 else<br />
 {<br />
 Console.WriteLine(&quot;\n\nPILA VACIA&quot;);<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(&quot;\n\nTAMAÑO DE LA PILA: &quot;);<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.

[DESCARGAR PROYECTO]

  • Share/Bookmark

Comments:

2 Responses to “Pilas en C#”


  1. muy bueno este post bien explicado y todo


  2. [...] del manejo de colas en C#, en este tipo de estructuras contamos igual con 4 metodos como en las pilas y las definiremos a [...]

Leave a Reply