Colas en C#

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

Tagged Under : , , , ,

Ahora les dejaremos ejemplos del manejo de colas en C#, en este tipo de estructuras contamos igual con 4 metodos como en las pilas y las definiremos a continuacion.

1.Push

push( cola,frente,final,max,elemento)

Si frente=0, final =max-1 Entonces

Imprimir “La cola esta llena” Salir

Si_No  Si frente=1 Entonces

frente<–0

final<–0

Si_No

final<–final+1

Fin_Si

cola[final]<–elemento

Fin_Si

Fin_Procedimiento

Y el codigo en C# es el siguiente:


public void push(int elemento)
 {
 if (frente == 0 && final == max - 1)
 {
 Console.WriteLine("\n\nLa cola esta llena");
 Console.ReadLine();
 return;
 }
 else if (frente == -1)
 {
 frente = 0; final = 0;
 }
 else
 {
 final = final + 1;
 }
 cola[final] = elemento;
 }

2. Pop

pop(cola,frente,final,max)

Si frente!=-1 Entonces

Imprimir”El elemento”,cola[frente],”Sera eliminado de la cola”

cola[frente]<–0

Si frente=final Entonces

frente<–  (-1),final<– (-1)

Fin_Si

Si_No

Imprimir “La cola esta vacia”

Fin_Si

Fin_Procedimiento

Y el codigo en C# es el siguiente:


public void pop()
 {
 if (frente != -1)
 {
 Console.WriteLine("El Elemento " + cola[frente] + " Sera eliminado de la cola");
 Console.ReadLine();
 cola[frente] = 0;
 if (frente == final)
 {
 frente = -1; final = -1;
 }
 else
 {
 frente = frente + 1;
 }
 }
 else
 {
 Console.WriteLine("La Cola esta vacia");
 Console.ReadLine();
 }

}

3. Recorrido

Si frente!=-1

apuntador<– frente

Repetir Mientras apuntador<=final

Imprimir”Elemento”,cola[apuntador],”Posicion”,apuntador

apuntador<–apuntador+1

Fin_Ciclo

Si_No

Imprimir “La cola esta vacia”

Fin_Si

Fin_Procedimiento

Y el codigo en C# es el siguiente:


public void recorrido()
 {
 if (frente != -1)
 {
 int apuntador = frente;
 do
 {
 Console.WriteLine("Elemento: " + cola[apuntador] + " Posicion: " + apuntador);
 apuntador = apuntador+1;
 } while (apuntador <=final);
 Console.ReadLine();
 }
 else
 {
 Console.WriteLine("\n\nLa Cola esta VACIA");
 Console.ReadLine();
 }
 }

4. Busqueda

Busqueda(cola,frente,final,max,elemento)

Si frente != -1 Entonces

apuntador<–frente

Repetir Mientras apuntador <=final

Si elemento =cola[apuntador] Entonces

Imprimir “dato localizado en la posicion”,apuntador

Salir

Si_No

apuntador<–apuntador +1

Fin_Ciclo

Imprimir”El elemento”,elemento,”no esta en la cola”

Si_No

Imprimir “La cola esta vacia”

Fin_Si

Fin_Procedimiento

Y el codigo en C# el siguiente:


public void busqueda(int elemento)
 {
 if (frente != -1)
 {
 int apuntador = frente;
 while(apuntador <= final)
 {
 if (elemento==cola[apuntador])
 {
 Console.WriteLine("\n\nDato localizado en la posicion" + apuntador);
 Console.ReadLine();
 return;
 }
 else
 {
 apuntador = apuntador + 1;
 }
 }
 Console.WriteLine("\n\nEl dato: " + elemento + "\nNo esta en la Cola");
 }
 else
 {
 Console.WriteLine("\n\nCOLA VACIA");
 }
 Console.ReadLine();
 }

Al igual que en las Pilas, tenemos que declarar nuestro array global al igual que las variables, frente, final, max y recibir como parametro desde el Main la variable elemento

double []cola;
 int frente, final,max;
 public clasecolas(int n)
 {
 cola = new double[n];
 frente = -1;
 final = -1;
 max = n;
 }

De nuevo espero que les haya sido util este ejemplo y a continuacion les dejo el link para que descargen el proyecto completo .

[Descargar Proyecto]

  • Share/Bookmark

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