Asumiré que sabes lo que es una cola.
Puede implementar una cola de doble extremo utilizando una matriz. Aquí hay un ejemplo en VisualBasic
La clase Queue junto con un constructor.
- Cómo elegir la estructura de datos correcta
- Cómo demostrar que el camino más corto posible entre dos puntos es una línea recta
- ¿Cuál es la forma más fácil de eliminar elementos duplicados de una matriz de derecha a izquierda?
- ¿Cómo se puede implementar un algoritmo de ordenación rápida en el cálculo Lambda?
- ¿Qué es un árbol en el estudio de estructuras de datos y algoritmos?
Cola de clase pública
Private QueueArray (255) como Integer ‘Esta es la matriz que contiene la cola. Esto puede contener 256 artículos
Capacidad privada como número entero ‘El número de elementos que la cola puede contener
Private QueueIsEmpty as Boolean ‘Establecido en verdadero si la cola está vacía
Private QueueIsFull as Boolean ‘Set to true of the queue is full
Private InsertionPoint como índice de matriz de enteros donde se realizará la siguiente inserción
Private RemovalPoint como índice de matriz de enteros donde se realizará la próxima eliminación
Private QueueCount as Integer ‘Número de elementos en la cola
‘El constructor. Inicializa todo aquí
Public Sub New ()
Capacidad = 256: QueueIsEmpty = True: QueueIsFull = False: InsertionPoint = 0: RemovalPoint = 0: QueueCount = 0
End Sub
Siguiente parada; Los dos métodos más importantes de la clase Queue. El método Enqueue
para agregar cosas a la cola y Dequeue
para eliminarlas
Public En Enueue (artículo como entero)
Si QueueIsFull = False entonces ‘Primero lo primero, solo agregue a la Cola si no está lleno
QueueArray (InsertionPoint) = item ‘Agrega el ítem a la Cola
QueueCount = QueueCount + 1 ‘Incrementar el número de elementos en la cola
‘No olvide verificar si la cola se llenó después de la inserción
Si QueueCount = Capacidad, entonces QueueIsFull = True
InsertionPoint = InsertionPoint + 1 ‘Mover al siguiente punto de inserción
‘Esto es lo que lo convierte en una cola doble. Se envuelve (vuelve a 0)
Si InsertionPoint> 255, entonces InsertionPoint = 0
Terminara si
End Sub
Dequeue de función pública () como entero
Si QueueIsEmpty = False, entonces ‘Eliminar solo de una cola si no está vacío
‘Obtenga el artículo en el punto de extracción
Dim elemento como Integer = QueueArray (RemovalPoint)
QueueCount = QueueCount – 1 ‘Disminuye el número de elementos en la cola
‘Compruebe si la cola se quedó vacía después de la eliminación
Si QueueCount = 0 Entonces QueueIsEmpty = True
RemovalPoint = RemovalPoint + 1 ‘Incremento al siguiente punto de eliminación
‘ Envolver alrededor. Es una cola doble, ¿recuerdas?
Si RemovalPoint> 255, entonces RemovalPoint = 0
Devolver artículo ‘Devolver artículo de la cola
Terminara si
Función final
Clase final
Esas son las partes más importantes. Agreguemos algunos métodos más útiles. Count
que devolverá el número de elementos en la cola, IsEmpty
que devolverá True
si la cola está vacía e IsFull
que devolverá True
si la cola está llena al IsFull
. Entonces agregue
Recuento de funciones públicas () como entero
Return QueueCount
Función final
Función pública IsFull () como booleana
Cola de retorno completa
Función final
Función pública IsEmpty () como booleana
Cola de retorno completa
Función final
Ahí. Una cola simple de doble extremo sin usar una lista vinculada. Por supuesto, todavía necesita algunos retoques como, por ejemplo, generar un error cuando intenta eliminar de una Cola vacía, etc.
Espero que haya ayudado.