implment linkedlist adt