Una cola es una estructura lineal que sigue un orden particular en el que se realizan las operaciones. El orden es Primero en entrar, primero en salir (FIFO).
Ahora bien, si está familiarizado con otros lenguajes de programación como C++, Java y Python, existen bibliotecas de colas integradas que se pueden usar para la implementación de colas, pero ese no es el caso con Golang. Incluso si no lo sabes, solo sé Golang no ofrece una estructura de cola integrada.
¿Cómo implementar Queue en Go Language?
Hay muchas formas de implementar colas en Golang utilizando otras estructuras de datos, como:
- Usando rebanadas
- Usando estructuras
- Uso de lista de enlaces
1. Implemente la cola usando segmentos en el lenguaje Go:
Implemente la puesta en cola mediante un segmento simple en el que la puesta en cola y la puesta en cola se realizan mediante funciones. y Subdesbordamiento (la cola está vacía) se verifica mientras se cancela la cola.
Que debe llevar
|
Output: Enqueued: 10 After pushing 10 [10] Enqueued: 20 After pushing 20 [10 20] Enqueued: 30 After pushing 30 [10 20 30] Queue After removing 10 : [20 30] Enqueued: 40 After pushing 40 [20 30 40]
Observación: El problema aquí es que no podemos definir el tamaño o la capacidad de la cola. Sin embargo, se puede hacer definiendo la cola como make([]int, 0, 10) donde el tercer parámetro determina la capacidad, pero el problema surge cuando la capacidad aumenta dinámicamente en una condición de desbordamiento.
2. Uso de estructuras:
Para resolver el problema del anterior, utilice en su lugar Estructuras que consisten en:
- Elementos, es decir, elementos de la cola
- Tamaño, es decir, capacidad de:
Use Punteros para cambiar instantáneamente la cola sin enviarla de vuelta cada vez y verifique las condiciones de desbordamiento y subdesbordamiento:
Para llevar
|
Output: [] [1] [1 2] [1 2 3] Overflow [1 2 3] 1 [2 3] [2 3 9] 2 [3 9]
Observación: Solíamos comparar la longitud de los elementos con el tamaño (capacidad definida) de la estructura de la cola que es más útil.
3. Usando Lista de enlaces:
Para llevar
|
Output: 10
Observación: En esto también surge el problema de la capacidad y para solucionarlo es necesario inicializar otra variable y comparar la longitud de la LinkList para cada pushback.