¿Qué significa front = rear = null y front = rear = -1 en la cola de las estructuras de datos en C ++?

Considere una cola frente a una tienda. Puede relacionar fácilmente cosas con colas en C ++.

Comprender los conceptos básicos

Deje que los asteriscos representen a las personas que hacen cola.

* <- Frente de la cola

* *

* *

* *

* *

* *

* <- Parte posterior de la cola.

Las personas se unen a la cola solo desde atrás. Si alguien intenta unirse desde el frente o desde el medio, la gente lo empujará fuera de la línea y le dirá que regrese.

Del mismo modo, las personas salen de la cola solo desde el frente. Si hay una cola en frente de un teatro, la persona en el frente saldrá de la cola y luego entrará al teatro.

Como puede ver, el patrón seguido se llama FIFO. Primero en llegar y primero en salir.

Llegando a la pregunta

Si no hay personas frente a la tienda, significa que no se forma cola. ¡No tiene sentido decir que hay una cola con 0 personas!

Por lo tanto, no hay delantero o trasero. En C ++, dado que la indexación comienza desde 0, podemos relacionar esto como front = -1 y rear = -1.

Por lo tanto, la cola no se forma. Por lo tanto delantero = trasero = -1.

Cuando llega la primera persona (elemento), Él forma una cola.

Pero dado que solo hay una persona en la cola, actúa como el frente y la parte trasera.

Lo que significa que delantero = trasero. Y dado que la indexación comienza desde 0, front = rear = 0.

¡Espero que hayas encontrado la respuesta a tu pregunta!

Conozco la estructura de datos de Python. Pero creo que para c ++ también es casi lo mismo, así que solo intente correlacionar esto.

Primero déjame aclarar la definición de delantero y trasero

  • Front siempre muestra la posición del índice del primer elemento en la cola.
  • Posterior muestra la posición del índice del último elemento en la cola
  1. Caso-1 if (front = rear = 0) eso significa que solo hay un elemento en la cola exactamente. Debido a que ambos lados están en la posición de índice cero.
  2. Caso-2 if (front = rear = -1) eso significa que no hay ningún elemento en la cola (Queue está vacío) porque rear siempre indica el último elemento de la cola.

En ambos casos significa que la cola está vacía. La diferencia está en la implementación. Si representa la cola mediante una lista vinculada de nodos, configure los punteros delantero y trasero en el puntero nulo para indicar que la cola está vacía. Si está implementando la cola usando una matriz, establece los índices delantero y trasero en algunos valores especiales cuando la cola está vacía. Establecerlos en -1 está bien, ya que los índices de matriz comienzan en 0.

1.frente = trasero = NULO

Inicializa las variables de la cola cuando la cola se mantiene utilizando nodos vinculados.

2. delantero = trasero = -1

Inicializa las variables de la cola cuando la cola se mantiene utilizando matrices.

More Interesting

¿Cuál es el algoritmo de aprendizaje automático más útil para Google?

¿Cuál es la diferencia entre la mochila y los problemas de Cutting the Rod usando programación dinámica?

¿Qué es un algoritmo eficiente para encontrar un circuito euleriano en un gráfico no dirigido?

¿Son 2 horas de entrenamiento de rompecabezas de algoritmos por día durante un año suficiente para prepararse para la entrevista de Google?

Cómo visualizar algunas estructuras de datos básicos y algoritmos

Cómo hacer que el código de una ordenación de inserción sea más optimizado utilizando una lista vinculada

Conozco estructuras de datos y algoritmos. ¿Cómo programo un compilador simple?

¿Cuándo debería mirar la solución de algún problema algorítmico?

Cómo calcular la O grande de: for (int k = 2; k <floor (sqrt (n)); k ++)

¿Qué otros algoritmos de clasificación utilizan la estrategia 'Divide y vencerás' además de la clasificación rápida y la combinación?

¿Puede mostrar que la ordenación por fusión tiene complejidad de tiempo [matemática] O (n \ log n) [/ matemática]?

¿Cuál es el mejor algoritmo / software de compresión hasta ahora? ¿Cómo funciona (vista simple y abstracta) y qué se puede mejorar?

¿Qué algoritmos gráficos (10-15, tal vez) sugeriría que hicieran bien en la programación competitiva?

¿Qué libro debo consultar para estructuras de datos en c ++?

¿Cuáles son las mejores rutinas que podemos adoptar para ser buenos en la programación / diseño de algoritmos?