A stack is a data structure that follows the last-in, first-out (LIFO) principle. Elements can only be added to or removed from the top of the stack. A stack is commonly implemented as an array or linked list. Key components of a stack include the top pointer, which points to the last element added, and elements, which hold data. Common stack operations include push, which adds an element to the top, and pop, which removes the top element.