¿Cuáles son las ventajas de las pilas en la estructura de datos?

Las pilas proporcionan una forma única de trabajar con memoria contigua. Muy similares a las matrices y listas, las pilas proporcionan una manera para que los usuarios accedan a diferentes piezas de datos contiguos de una manera de último en entrar, primero en salir .

Imagina si estuvieras mirando una pila de libros. Siempre que quisieras agregar un libro a la pila, sería muy fácil ponerlo encima. Del mismo modo, si quisieras agarrar un libro de la pila, sería muy fácil agarrar el libro en la parte superior.

Ahora, si desea acceder a cualquier libro arbitrario en la pila, tendría que quitar o levantar todos los libros que están encima, tomar el libro que desea y luego volver a agregar los libros eliminados. Esto puede ser un poco doloroso.

¡Así es exactamente como funciona una estructura de datos de pila! Las pilas permiten 3 operaciones básicas:

O (1) → E Peek ()

O (1) → E Pop ()

O (1) → void Add (elemento E)

Pero cada una de estas operaciones solo se aplica a la parte superior de su pila de libros. Si desea acceder a un libro arbitrario, deberá eliminar los N libros principales, acceder al que desea y luego agregar los N libros superiores.

Ahora, esta pregunta pide las ventajas de una pila. Las pilas son fáciles de usar (soporte inherente de Utils Library en Java y STL en C ++) y el tiempo de ejecución de la garantía O (1) para las 3 operaciones anteriores. Por supuesto, puede argumentar que use una matriz o una lista, pero ¿por qué no usar la estructura de datos incorporada cuando tiene la opción de hacerlo? 🙂

Su uso más omnipresente es realizar un seguimiento de los entornos anteriores, que deberían restaurarse en una etapa posterior. Cada vez que una función se llama su alcance (el entorno en el que se colocan todos sus parámetros y variables locales) se establece en una pila para que pueda recuperarse cuando vuelva la siguiente función.

Aparte de eso, también se usa con mucha frecuencia como una forma razonablemente eficiente de revertir una lista de valores.

Los recorridos de árboles casi siempre usan una pila. Incluso si los hace de forma recursiva, estaría utilizando la pila de funciones automáticas. si lo hace de forma iterativa, deberá colocar manualmente los valores en una pila.

Otro uso (menos común) es ordenar la precedencia del operador al analizar las declaraciones como las fórmulas matemáticas.

Probablemente también hay otros usos, aunque esos son los que puedo pensar fuera de mi cabeza.

Stack es una estructura de datos importante, que tiene una amplia gama de aplicaciones en su campo, ahora su importancia radica en el hecho de que sigue algo llamado LIFO / último en entrar, primero en salir. Ahora, la importancia de una entidad viene a nosotros solo cuando comenzamos a usarla directa o indirectamente. Uno de esos usos indirectos de la pila en nuestra vida diaria está en la función llamada dentro de una función.

Es un hecho interesante notar que cuando llamamos a una función dentro de una función repetidamente, la última función llamada se ejecuta primero. Aquí la pila se usa internamente para ejecutar este escenario.

P.ej:

método_ 1 () {

Cout << "método_1 \ n";

método_2 ();

}

método_ 2 () {

Cout << "método_2 \ n";

método_3 ();

}

método_ 3 () {

Cout << "método_3";

}

SALIDA ::

Método 1

método_2

método_3

Ahora esta salida es así solo por la pila. Cuando se llama al método_1 será empujado a una pila y luego comenzará su ejecución, cuando el control se encuentre con el método_2 llamarlo nuevamente empujará method_2 en la misma pila, la misma historia se repetirá cuando el control encuentre la llamada a method_3. Cuando finalmente se realiza la compilación con todas las ejecuciones de declaraciones simples en el último método empujado, ese método en particular se sacará de la pila y se ejecutará el siguiente método que es method_2 . Y el proceso continúa hasta que la pila no esté vacía.

Este uso de stack es algo que los programas usan a diario. Aparte de esto, hay varios usos de la pila como la evaluación de expresiones, infijo para fijar la conversación y así sucesivamente. Discutí este uso particular de la pila porque es algo que personalmente sentí un uso inconsciente de la misma y que no se ha discutido en la mayoría de la literatura.

La pila sigue el esquema de último en entrar, primero en salir. Debido a esto, los primeros datos pueden quedar atrapados en el nivel inferior de la pila y quedar reservados para el procesamiento debido a esto. surge un nuevo problema de complejidad espacial, ya que los datos se almacenan continuamente hasta que se requiere la última fuente de espacio para la asignación y manipulación de datos para el procesamiento