1. When enqueuing, you should insert onto the back and modify the back pointer.
2. When dequeuing, you should remove from the front and modify the front pointer.
3. With the design you currently have, you have a limit to the total number of elements you can EVER place on the queue (not just at 1 time). When you remove elements from a fixed sized queue, you need to make sure that the space you empty can be reclaimed for future enqueues. The most intuitive (but extremely time consuming) way is to move each element 1 space forward in the queue (kind of like people moving forward in a line at the post office), and adjusting the back pointer. A better way is to use circular queues. Google it.