ok i think i can see where my confusion is the -> operator
tail is a pointer to a block of memory using the -> operator is saying we want to change something in that block of memory its NOT saying change what part of tail points to i cant describe my meaning better than that sorry