Una pila es un tipo de datos abstracto (ADT) en los lenguajes de programación. Las pilas funcionan sobre la base de LIFO.
Almacena datos 1D al igual que un array, pero es una estructura de datos especializada que sólo permite a un usuario añadir, acceder y eliminar el último elemento.
- "Último en entrar, primero en salir"
- Superrápido (O(1)) para estas operaciones porque está incorporado directamente en el hardware. (O(1) denota la complejidad de tiempo.)
Ejemplos de la vida real de las pilas son Rotis, Ropa, Platos en el comedor, Papeles de preguntas en la sala de exámenes, etc....
En la ciencia de la computación, ejemplos de Pila son -
- Llamadas a funciones
- Mantener un registro de ediciones para deshacer o páginas visitadas en un sitio web para volver a ellas.
Main operations (C++ STL functions):
- s.push(value) : add an element on the top of the stack.
- s.pop () : removes the top element of the stack.
- s.top() : returns the top value without removing it.
- s.empty() : returns true if stack has no elements.
- s.size() : returns the number of elements in stack.
You cannot access a stack's elements by index. Instead, you pull elements out of the stack one at a time.
common pattern: pop each element until the stack is empty.
Some beginner programmers get confused when to use what:
In summary :
- 2D data: use 2D array
- 1D data: which element do I need to access?
- Frequent looping or middle elements : use 1D Array or Vector.
- first element : use Queue.
- last element : use Stack.
For more information visit : stack - C++ Reference
Image courtesy: google