A stack is a linear data structure that follows the LIFO (last-in, first-out) principle. Elements are inserted and removed from only one end called the top of the stack. Common stack operations are push, which adds an element to the top, pop, which removes an element from the top, and peek, which returns the top element without removing it. A stack can be implemented using arrays, linked lists, or other data structures. Push involves adding an element to the top of the stack, while pop involves removing and returning the top element.