Una stack es un estructura de datos lineal que sirve como una colección de elementos, con tres operaciones principales: empujar, abrir y mirar. Hemos discutido estas operaciones en el Publicación anterior y cubrió una implementación de array de la estructura de datos de stack. En esta publicación, un lista enlazada se discute la implementación de la stack.

Practice this problem

Podemos implementar fácilmente una stack a través de un lista enlazada. En la implementación de listas enlazadas, una stack es un puntero a la "cabeza" de la lista donde suceden los elementos que se empujan y extraen, con tal vez un contador para realizar un seguimiento del tamaño de la lista.

La ventaja de usar una lista enlazada sobre arrays es que es posible implementar una stack que puede crecer o reducirse tanto como sea necesario. El uso de una arrays restringirá la capacidad máxima de la arrays, lo que puede provocar un desbordamiento de la stack. Aquí, cada nuevo nodo se asignará dinámicamente, por lo que no es posible el desbordamiento a menos que se agote la memoria.

 
La implementación se puede ver a continuación en C, Java y Python:

C


Descargar  Ejecutar código

Java


Descargar  Ejecutar código

Python


Descargar  Ejecutar código

Output:
 
Inserting 1
Inserting 2
Inserting 3
The top element is 3
Removing 3
Removing 2
Removing 1
The stack is empty

La complejidad temporal de las operaciones push y pop es O(1).

 
Referencias: https://en.wikipedia.org/wiki/Stack_(abstract_data_type)