advantage of abstract data types it is clear that the implementation of the abstract linked-list data type has the disadvantage that certain useful procedures may not be directly accessible for instancethe standard abstract data type of list does not offer an efficient procedure last(lto give the last element in the listwhereas it would be trivial to find the last element of an array of known number of elements one could modify the linked-list data type by maintaining pointer to the last itemas we did for the queue data typebut we still wouldn' have an easy way to access intermediate items while last(land getitem(ilprocedures can easily be implemented using the primitive constructorsselectorsand conditionsthey are likely to be less efficient than making use of certain aspects of the underlying implementation that disadvantage leads to an obvious questionwhy should we want to use abstract data types when they often lead to less efficient algorithmsahohopcroft and ullman ( provide clear answer in their book"at firstit may seem tedious writing procedures to govern all accesses to the underlying structures howeverif we discipline ourselves to writing programs in terms of the operations for manipulating abstract data types rather than making use of particular implementations detailsthen we can modify programs more readily by reimplementing the operations rather than searching all programs for places where we have made accesses to the underlying data structures this flexibility can be particularly important in large software effortsand the reader should not judge the concept by the necessarily tiny examples found in this book this advantage will become clearer when we study more complex abstract data types and algorithms in later