Lecture 34

Illustrates two different implementations of a linked list class. The first
implementation (linkedlist.h) does not implement a destructor, copy constructor, or
operator= function. This results in shallow copies and memory leaks

The second implementation (linkedlist_bigthree.h) implements a destructor, copy
constructor, and operator= function. This allows for deep copies (where the nodes in
the linked list are actually copied)

Note: the header files contain the class implementations just for convenience.
Usually, you would have a corresponding .cpp file that contains the implementation of
each function.