If your measure of βbetterβ is to not support pointers to the head and tail, instead you can just maintain pointers to the tail. The chapter pointer is implicit (given by the tail. Next).
In practice, access to the list is often quite common (say, if you use a circular list as a queue), and an extra step to access the head can add some overhead. In the test for the project I did, removing the head pointer in this way reduced memory (our lists were usually short, but we had a lot of them), but the time has increased since we often turned to the head of the list. YMMV.
source share