Implementar una Cola a base de arrays. Para ello, tendremos que hacer 5 funciones:
* ColaClear(array)
* ColaEnqueue(array, elemento)
* ColaDequeue(array)
* ColaPeek(array)
* ColaCount(array)
A todas las funciones habrá que pasarles el array que hará las veces de cola.
La función Dequeue y Peek devolverán el elemento que esté en la primera posición, pero mientras que Dequeue borra el elemento, Peek lo deja donde está.
La función Clear nos deja la cola vacía.
La función Count nos devuelve el tamaño de la cola.
Por último la función Enqueue añade un elemento a la cola, redimensionando el array cuando haga falta.
Ejemplo:
Module Module1
Sub Main()
'Implementacion de una cola.
Dim a() As Integer
Dim op, i As Integer
ReDim a(0)
op = -1
While op <> 0
Do
Console.Clear()
Console.WriteLine("Menu Principal"<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.WriteLine()
Console.WriteLine("1.Funcion Colaclear() - Borra toda la cola."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.WriteLine("2.Funcion ColaEnqueue(array, elemento) - meter elemento en la cola."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.WriteLine("3.Funcion ColaDequeue(array) - saca elemento de la cola."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.WriteLine("4.Funcion ColaPeek(array) - da el proximo elemento de la cola."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.WriteLine("5-Funcion ColaCount(array) - da el nº elementos de la cola."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.WriteLine("6-Ver la cola"<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.WriteLine("7.Salir"<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.WriteLine()
op = Console.ReadLine
Console.WriteLine()
Loop Until op > 0 And op < 8
Select Case op
Case 1
i = 0
Dim cad As String = "Procediendo a borrar la cola "
While i < 5
Console.SetCursorPosition(0, 12)
Console.Write(cad)
Threading.Thread.Sleep(1000)
cad += "."
i += 1
End While
a = colaclear(a)
Console.WriteLine("pulsa una tecla."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.ReadKey()
Case 2
Console.SetCursorPosition(0, 12)
Console.Write("Dame un numero a meter en la cola: "<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Dim n As Integer = Console.ReadLine
a = colaenqueue(a, n)
Console.WriteLine("pulsa una tecla."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.ReadKey()
Case 3
Console.SetCursorPosition(0, 12)
Console.WriteLine("Valor sacado de la cola: " & coladequeue(a))
Console.WriteLine("pulsa una tecla."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.ReadKey()
Case 4
Console.SetCursorPosition(0, 12)
Console.WriteLine("proximo valor de la cola: " & colapeek(a))
Console.WriteLine("pulsa una tecla."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.ReadKey()
Case 5
Console.WriteLine("Elementos en la cola: " & colacount(a))
Console.WriteLine("pulsa una tecla."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.ReadKey()
Case 6
Dim p As Integer
For p = 1 To UBound(a)
Console.Write(a(p) & " "<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Next
Console.WriteLine()
Console.WriteLine("pulsa una tecla."<IMG class=tse-smiley title=Wink alt=Wink src="http://www.kriptus.com/wp-content/plugins/tango-smileys-extended/tango24/wink.png">
Console.ReadKey()
Case 7
op = 0
End Select
' Console.ReadKey()
End While
End Sub
Function colaclear(ByVal a() As Integer) As Integer()
ReDim a(0)
Return a
End Function
Function colaenqueue(ByVal a() As Integer, ByVal n As Integer) As Integer()
Dim i As Integer
i = colacount(a)
ReDim Preserve a(i + 1)
a(i + 1) = n
Return a
End Function
Function colacount(ByVal a() As Integer) As Integer
Dim i, j As Integer
j = 0
For i = 1 To UBound(a)
j += 1
Next
Return j
End Function
Function coladequeue(ByRef a() As Integer) As Integer
Dim n, i As Integer
Dim b() As Integer
n = colacount(a)
ReDim b(UBound(a) - 1)
For i = 2 To UBound(a)
b(i - 1) = a(i)
Next
n = a(1)
ReDim a(UBound(b))
a = b
Return n
End Function
Function colapeek(ByVal a() As Integer) As Integer
Dim n As Integer
n = UBound(a)
If n >= 1 Then
Return a(1)
Else
Return a(0)
End If
End Function
End Module