An abstract data type defines a set of values and the operations allowed on them, described purely by behavior — not by code. The implementation is the concrete structure (array, linked list, tree) that realizes that behavior.
The same ADT, different implementations
text
ADT "Queue": enqueue, dequeue, peek (FIFO contract)
Implementation A: array + two indices (ring buffer)
Implementation B: doubly linked list with head/tail pointers
Both honor the SAME contract; cost profiles differ.
Why separate them
python
:
(): ...
(): ...
(): ...
