1) Queues can be implemented using arrays or linked lists. Arrays have fixed size while linked lists allocate memory dynamically.
2) A queue class uses two pointers - qFront and qRear - to mark the front and rear of the queue. For linked list implementation, nodes are linked together and memory is allocated for each new element.
3) The key operations for queues - enqueue and dequeue - have O(1) time complexity for both array-based and linked list-based implementations. However, linked lists are more flexible in terms of memory usage.