Queue data structures allow for first-in, first-out access to elements. They have two ends - a head for removing elements and a tail for adding elements. Common implementations include arrays, linked lists, and stacks. Priority queues order elements by priority when removing them. Double-ended queues allow adding/removing from either end.