queue implementation with linked list