CONCEPTUAL QUESTIONS: 1. ListArrayBased shifts all elements whenever there is an addition or deletion. With queues, every element must move through the entire list before reaching the other end to be dequed. There are few benefits of using an array since access by position is not used in queues. Using an array-based list like this to implement a queue is very inefficient. ListReferenceBased (or perhaps ListArrayLinked) would be much more efficient. 2. To create a queue using only Stacks (stated in very formal psuedocode) I would create two stacks: Stack reversedStack = new Stack(); Stack orderedStack = new Stack(): For the enqueue operation: enque(Object item){ reversedStack.push(item); } For the dequeue operation: Object dequeue() { while (!reversedStack.isEmpty()){ orderedStack.push(reversedStack.pop()); } Object item = orderedStack.pop(); //reversedStack is now empty, so... while (!orderedStack.isEmpty()){ reversedStack.push(orderedStack.pop()); } return item; } While the enqueue() method is very efficient, dequeue() would be slow with a long queue. --Zach Tomaszewski--