• Possible repetitions (i.e. multiple occurrences) of the same element, and order through the sequence • Comparison with other data models • Recursive nature of the model
• head of the list • tail of the list • sublist: given i, j in [1, n], (ai , ai+1 , ..., aj) sublist of (a1 , a2 , ..., an) • subsequence, by eventually removing elements • prefix and suffix of a list
we already worked with in previous models: insert, delete, lookup • Particular definitions given the list model • Where to insert? • Which occurrence, if any, to delete?
, ..., an) and (b1 , b2 , ..., bm) is (a1 , a2 , ..., an, b1 , b2 , ..., bm) • Position-related operations: • first and last element (of non-empty lists) • retrieve i-th element • length-related operations: • length of the list • isEmpty?
lookup operations • Lists are good to define functions over sequences by its recursive nature • We can define new abstract data types (stack, queue) by restrictions on the basic data model