A stack is a linear data structure that follows the last-in, first-out (LIFO) principle. Elements can only be inserted or removed from one end, called the top. Common stack operations include push, which adds an element to the top, and pop, which removes the top element. Stacks have many applications, such as evaluating mathematical expressions, interrupt handling in computing, and temporary storage in stack machines. They can be implemented using either arrays or linked lists.