An abstract data type (ADT) is defined as a set of data values and operations that are specified independently of any implementation. An ADT defines the interface of a collection of data through a set of operations. The implementation of an ADT can vary as long as it fulfills the interface. A data structure provides a concrete technique for implementing an ADT by using data types like arrays or linked lists to represent the collection of data.