A stack is a linear data structure that follows the Last In, First Out (LIFO) principle, where the last element added is the first to be removed. It is commonly used in scenarios like function call management, undo mechanisms in applications, and syntax parsing in compilers.