>>1
The easiest way to do that is to create a head sentinel node. Basically, have a node at the front of the list that you never use, but it makes deleting the first REAL node of the list the same operation as deleting any other node of the list except the last one. Because you never change the first node refered to, you don't need to pass the list by reference.