queue implementation based on singly linked list