The data structure described in the previous section
makes the distinction whether an element is inserted into
an empty or non-empty queue obsolete. Due to the dummy
element, the queue never runs empty. As a consequence,
queue insertion happens in only two basic steps, namely:
(1) tail->next = item and then (2) tail = item,
with item being a Chain*. A nil head pointer will be automatically
set to the first list element when that element
is to be placed on a logically empty queue. This is because
tail points to the next pointer of the last element
in the queue, and not to the last element. Initially, this next
pointer is the head pointer itself.