if bboolean then tt end end where is type not involving is equivalent and replaceable by sequence of the remainder of this is devoted to the generation and manipulation of data structures whose components are linked by explicit pointers structures with specific simple patterns are emphasized in particularrecipes for handling more complex structures may be derived from those for manipulating basic formations these are the linear list or chained sequence -the simplest case -and trees our preoccupation with these building blocks of data structuring does not imply that more involved structures do not occur in practice in factthe following story appeared in zurich newspaper in july and is proof that irregularity may even occur in cases which usually serve as examples for regular structuressuch as (familytrees the story tells of man who laments the misery of his life in the following wordsi married widow who had grown-up daughter my fatherwho visited us quite oftenfell in love with my step-daughter and married her hencemy father became my son-in-lawand my stepdaughter became my mother some months latermy wife gave birth to sonwho became the brother-in-law of my father as well as my uncle the wife of my fatherthat is my stepdaughteralso had son therebyi got brother and at the same time grandson my wife is my grandmothersince she is my mother' mother hencei am my wife' husband and at the same time her stepgrandsonin other wordsi am my own grandfather linear lists basic operations the simplest way to interrelate or link set of elements is to line them up in single list or queue forin this caseonly single link is needed for each element to refer to its successor assume that types node and nodedesc are defined as shown below every variable of type nodedesc consists of three componentsnamelyan identifying keythe pointer to its successorand possibly further associated information for our further discussiononly key and next will be relevant type node pointer to nodedesctype nodedesc record keyintegernextnodedataendvar pqnode (*pointer variables* list of nodeswith pointer to its first component being assigned to variable pis illustrated in fig probably the simplest operation to be performed with list as shown in fig is the insertion of an element at its head firstan element of type nodedesc is allocatedits reference (pointerbeing assigned to an auxiliary pointer variablesay thereaftera simple reassignment of pointers completes the operation note that the order of these three statements is essential new( ) next :pp : nil fig example of linked list the operation of inserting an element at the head of list immediately suggests how such list can be