60 likes | 200 Views
This lecture delves into abstract data types (ADT) and their implementations focusing on lists using arrays and pointers. Key operations such as MakeNull, Insert, Delete, and element retrieval are explored. The discussion contrasts the intricacies of single pointer implementations with the efficiency of arrays and cursors. Situations where pointers are not natively supported are addressed by suggesting the use of cursor management for dynamic memory. Various implementations, including doubly linked lists and rings, are examined to understand their practical applications and behaviors within data structures.
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