single linked list and iterator