Point the head at the tail.
Useful for implementing a queue which receives really heavy traffic; instead of dropping the head of the line and creating a new node for the tail, you use the head as the new tail.
This helps quite a bit if garbage collection / object allocation was a significant speed hit, but it has its drawbacks:
I don't get it... resizing a linked list seems pretty straightforward to me.
Normally, that's true. However, the author seems to be really into low-level performance-oriented details, so the implementation the author is considering may be very complicated. The author may want to avoid using a DoubleLinkedList, for example, or may be concerned about concurrency issues (resizing it without locking the whole thing or invalidating any iterators, for example).
Okay, that makes some sense. Because otherwise I'd say pick a Container package for the circular linked list and move on to something a little more worth your time, fella.
Hmm.... That's a bit presumptuous, especially the "fella" part. But I digress.
Another use for circular lists is in GUI implementations. Most folks think of a graphical environment as a tree, since objects are contained within other objects, ad nauseum. However, it may prove more conceptually elegant to express hierarchies as circular lists. For example, in PC/GEOS, objects were arranged in this manner, as they were also in GEM. The idea being, given any reference to a widget, you can always find its root object by just following the list. For example, when trying to find the smallest enclosed widget corresponding to a mouse click, you want to start searching with the leaves first. Using a circular list for this allows this search to occur in constant space. --SamuelFalvo