head--> ["foxtrot",-]--> ["echo", -]--> ["foo",-] --> ["zebra",null] ^ cur insertAtTail( "zebra" ); 1st step: check for empty list: i,e see if the number of elements in list is 0 simplest test: is head null? What do we do it if is? we do insertAtFront and immed go home 2nd step ITS NOT empty so get a pointer at the last node Node cur = head; while ( the node curr points to does not have null next field ) cur = cur.next; step 3: we have a pointer to the last node curr.next = new Node ( zebra null )