List::List(const List& L): size(L.size) { if (L.head == NULL) head = NULL; // original list is empty else { // copy first node head = new Inventory_node; assert(head != NULL); // check allocation head->data = L.head->data; // copy rest of list Inventory_node* new_ptr = head; // new list pointer // NewPtr points to last node in new list // OrigPtr points to nodes in original list for (Inventory_node* orig_ptr = L.head->next; orig_ptr != NULL; orig_ptr = orig_ptr->next) { new_ptr->next = new Inventory_node; assert(new_ptr->next != NULL); new_ptr = new_ptr->next; new_ptr->data = orig_ptr->data; } // end for new_ptr->next = NULL; } // end if } // end copy constructor