An algorithm is a step-by-step procedure for solving a problem in a finite amount of time. The procedure should be sequential and deterministic.
Data structure is an efficient way of organizing data for storage and access by an algorithm where as an algorithm a step by step procedure for performing some task in a finite amount of time. Algorithms and data structures are closely linked to each other.
The Stack ADT stores arbitrary objects and insertions and deletions of this ADT follow the last-in first-out (LIFO) scheme like a spring-loaded plate dispenser.