pointer to each element is that the pointer requires space of its own if elements are never duplicatedthen this additional space adds unnecessary overhead java most naturally stores references to objectsmeaning that only single copy of an object such as payroll record will be maintainedeven if it is on multiple lists whether it is more advantageous to use references to shared elements or separate copies depends on the intended application in generalthe larger the elements and the more they are duplicatedthe more likely that references to shared elements is the better approach second issue faced by implementors of list class (or any other data structure that stores collection of user-defined data elementsis whether the elements stored are all required to be of the same type this is known as homogeneity in data structure in some applicationsthe user would like to define the class of the data element that is stored on given listand then never permit objects of different class to be stored on that same list in other applicationsthe user would like to permit the objects stored on single list to be of differing types for the list implementations presented in this sectionthe compiler requires that all objects stored on the list be of the same type besides java genericsthere are other techniques that implementors of list class can use to ensure that the element type for given list remains fixedwhile still permitting different lists to store different element types one approach is to store an object of the appropriate type in the header node of the list (perhaps an object of the appropriate type is supplied as parameter to the list constructor)and then check that all insert operations on that list use the same element type the third issue that users of the list implementations must face is primarily of concern when programming in languages that do not support automatic garbage collection that is how to deal with the memory of the objects stored on the list when the list is deleted or the clear method is called the list destructor and the clear method are problematic in that there is potential that they will be misused deleting listarray in the array-based implementationor deleting link node in the linked list implementationmight remove the only reference to an objectleaving its memory space inaccessible unfortunatelythere is no way for the list implementation to know whether given object is pointed to in another part of the program or not thusthe user of the list must be responsible for deleting these objects when that is appropriate doubly linked lists the singly linked list presented in section allows for direct access from list node only to the next node in the list doubly linked list allows convenient