A stack is a last in, first out (LIFO) abstract data type and data structure.Basic usage of stack at the Architecture level is as a means of allocating and accessing memory.
We can only perform two fundamental operations on a stack: push and pop.
The push operation adds to the top of the list, hiding any items already on the stack, or initializing the stack if it is empty. The pop operation removes an item from the top of the list, and returns this value to the caller. A pop either reveals previously concealed items, or results in an empty list.
A stack is a restricted data structure, because only a small number of operations are performed on it.