A stack is a linear data structure that follows the Last In, First Out (LIFO) principle, allowing access to elements only from one end. Operations on a stack include 'push' for adding elements and 'pop' for removing elements, which are limited to the top of the stack. It can be implemented using arrays or pointers in memory, and is used in various applications such as mathematical expression evaluation and recursion simulation.