A generic queue data structure