1 / 6

Lists

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

austin
Télécharger la présentation

Lists

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lists ADT Array Implementation Single Pointer Implemention Cursors Doubly Linked Ring CS 303 –Lists Lecture 4

  2. 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

  3. 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

  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

  5. 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

  6. 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

More Related