as another examplea text document can be viewed as long sequence of characters word processor uses the abstraction of cursor to describe position within the document without explicit use of an integer indexallowing operations such as "delete the character at the cursoror "insert new character just after the cursor furthermorewe may be able to refer to an inherent position within documentsuch as the beginning of particular sectionwithout relying on character index (or even section numberthat may change as the document evolves node reference as positionone of the great benefits of linked list structure is that it is possible to perform ( )-time insertions and deletions at arbitrary positions of the listas long as we are given reference to relevant node of the list it is therefore very tempting to develop an adt in which node reference serves as the mechanism for describing position in factour doublylinkedbase class of section has methods insert between and delete node that accept node references as parameters howeversuch direct use of nodes would violate the object-oriented design principles of abstraction and encapsulation that were introduced in there are several reasons to prefer that we encapsulate the nodes of linked listfor both our sake and for the benefit of users of our abstraction it will be simpler for users of our data structure if they are not bothered with unnecessary details of our implementationsuch as low-level manipulation of nodesor our reliance on the use of sentinel nodes notice that to use the insert between method of our doublylinkedbase class to add node at the beginning of sequencethe header sentinel must be sent as parameter we can provide more robust data structure if we do not permit users to directly access or manipulate the nodes in that waywe ensure that users cannot invalidate the consistency of list by mismanaging the linking of nodes more subtle problem arises if user were allowed to call the insert between or delete node method of our doublylinkedbase classsending node that does not belong to the given list as parameter (go back and look at that code and see why it causes problem!by better encapsulating the internal details of our implementationwe have greater flexibility to redesign the data structure and improve its performance in factwith well-designed abstractionwe can provide notion of nonnumeric positioneven if using an array-based sequence for these reasonsinstead of relying directly on nodeswe introduce an independent position abstraction to denote the location of an element within listand then complete positional list adt that can encapsulate doubly linked list (or even an array-based sequencesee exercise -