Copy the whole list.
I'd say one of main purposes of copy-constructor is copying the whole list and make two independent objects.
Copy/Move the whole list to a new list to avoid unintended dangling pointers due to destructing one of copies, unintended modifications and many other problems... After copy it should have two independent copies.
Also, since you have to write a copy-constructor, you should write:
- Destructor
- Copy assignment operator
- Move constructor
- Move assignment operator
Read Rule of five. Moreover, you can take advantages of copy-and-swap idiom.