A LIFO Data Structure that holds elements with three constraints:
- Data can be inserted only at the end (top) of the stack
- Data can be deleted only from the end of the stack
- Only the last element of the stack can be read
A Stack does not care about the underlying data structure, all it cares about is that the data structure behaves in a certain way. Because of this a stack is call a abstract data type.