Queue is a linear data structure where elements are inserted at one end called the rear and deleted from the other end called the front. It follows the FIFO (first in, first out) principle. Queues can be implemented using arrays or linked lists. In an array implementation, elements are inserted at the rear and deleted from the front. In a linked list implementation, nodes are added to the rear and removed from the front using front and rear pointers. There are different types of queues including circular queues, double-ended queues, and priority queues.