double-ended queue — abstract data type for which elements can be added to or removed from either the front or back