A stack is a last-in, first-out data structure where elements can only be added (pushed) or removed (popped) from one end, called the top. Common applications include reversing words, implementing undo functions, backtracking in algorithms, and managing function calls and memory allocation using a call stack. Stacks are often implemented using arrays, where an index tracks the top element and elements are added or removed by changing the top index and relevant array values.