60 likes | 188 Views
Lists. ADT Array Implementation Single Pointer Implemention Cursors Doubly Linked Ring. ADT List - Operations. L = MakeNull() Insert(L,p,x) Delete(L,p) p = First(L) p = End(L) p = Previous(L,p) p = Next(L,p) p = Locate(L,x) x = Retrieve(L,p) x: ElementType p: PositionType
E N D
Lists ADT Array Implementation Single Pointer Implemention Cursors Doubly Linked Ring CS 303 –Lists Lecture 4
ADT List - Operations • L = MakeNull() • Insert(L,p,x) Delete(L,p) • p = First(L) p = End(L) • p = Previous(L,p) p = Next(L,p) • p = Locate(L,x) • x = Retrieve(L,p) • x: ElementType • p: PositionType • L: ListType • Why isn’t First(L)always 1? • Because Position is hidden! No arithmetic is allowed (by the user) on • Positions. Use Previous and Next! CS 303 –Lists Lecture 4
Array Implementation 1 2 n MaxLength Last Internal routines can do arithmetic on “positions”, but external (user) routines cannot. Why? CS 303 –Lists Lecture 4
Single Pointer Implementation • L ... Header What is the purpose of the header? (Hing: consider “position”) Compare details (efficiency, behavior of “position”) with Array Implementation Array Pointer Previous/End EASY HARD Insert/Delete HARD EASY CS 303 –Lists Lecture 4
Cursors (an aside) • Suppose you want to use pointers – but your programming • environment does not support them? • Use “cursors” • Allocate an Array called CursorSpace • Use indices into CursorSpace just like pointers • Do your own memory management of cells • New • Dispose CS 303 –Lists Lecture 4
Doubly Linked Lists/Rings L • Many variations • Is ‘?’ a0 (Header) or a1? [a1] • Is ‘L’ part of the structure, or an external pointer? [external] • Is there a “First” element? [where L points!] • Implement the full Ring! • Everything is EASY; Position is natural CS 303 –Lists Lecture 4