1) Stacks are last-in, first-out (LIFO) data structures that allow efficient insertion and removal of elements from only one end, called the top. Common stack operations are push and pop. 2) Stacks have many applications, including checking for balanced brackets in code, evaluating postfix expressions by using intermediate results, and implementing function calls and recursion by saving activation records on a stack. 3) Stacks can be implemented using either a linked list or an array. The array implementation uses an array and a top pointer to track the top of the stack.