For a singly linked list, should I store the head and size variables, or the head, tail, and size?
Only the head
field is a canonical. You can trivially implement getSize()
and getTailNode()
methods with only the head node available.
Storing size
and tail
as fields is optional, they are not a fundamental part of the "linked list" concept. Having them does benefit the complexity of certain operations though, at the cost of having to store and correctly update them.