implementing various queue data structures