Sí, se puede implementar un “OneQueueStack” utilizando una única estructura de datos de cola, independientemente de cómo se implemente esa cola internamente. Por supuesto, hay un costo de rendimiento asociado sobre una pila “nativa”.
Una cola implementa la mayor parte de la funcionalidad de la pila, como probablemente te des cuenta. El único cambio de código real necesario es en la función Push (val) de su Pila o en su función Pop () (que se traduce entre LIFO y FIFO) y ralentizará esa función.
Re: rendimiento. Entre Push y Pop, ¿qué función necesitas para permanecer rápido?
- ¿Hay alguna forma de imprimir todos los elementos de una lista enlazada en orden inverso sin usar la recursividad?
- ¿Cómo funcionan los algoritmos de Quora para las respuestas?
- Cómo demostrar que este gráfico todavía puede estar fuertemente conectado
- ¿Qué es el "peso" en el algoritmo de Facebook?
- ¿Qué idioma debo aprender para el comercio de algoritmos?
Si elige la primera opción (Pop rápido), cuando un nuevo dato sea Push () para usted, primero debe rotar a través de todos los datos en la Cola, ya que necesita almacenar sus datos en el orden de “Cola”. De esta manera, cuando se le pide que haga estallar (), los datos más recientes se encuentran en la parte delantera de la Cola y pueden eliminarse inmediatamente ().
Si opta por la segunda opción (Push rápido), cuando los datos son Push () para usted, simplemente los pone en cola () tal como están. Pero luego, cuando se llama a Pop (), debe rotar a través de toda la cola para llegar al elemento posterior, para quitarlo ().
Entonces, la respuesta es sí, puede implementar esto con una sola cola, y debe elegir si desea una función Push () más lenta o una función Pop () más lenta.