1 / 10

Data Organization

Data Organization. Example 1: Heap storage management Keep track of free chunks of memory Example 2: A simple text editor Maintain a sequence of lines Example 3: Stable matching problem Maintain the set of currently free men Keep track of each person's preferences

neena
Download Presentation

Data Organization

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. Data Organization • Example 1: Heap storage management • Keep track of free chunks of memory • Example 2: A simple text editor • Maintain a sequence of lines • Example 3: Stable matching problem • Maintain the set of currently free men • Keep track of each person's preferences • Quickly find the highest-ranked woman to whom a man has not proposed yet • Quickly find whether a woman is engaged and to whom

  2. Data Organization • All these examples have a common organizational model: • A sequence of similar items • (memory blocks, lines, men/women) • Certain desired operations • find, insert, delete

  3. The list ADT • Data: • A collection of homogeneous elements arranged in a sequence • Operations • Insert • Delete • Find • Update • Retrieve • Length

  4. The list ADT • Most operations refer to a certain position in the list. How will this be designed? • Maintain a "current" position? • Specify an index? • Specify a pointer to an element? • Specify a generalized pointer to an element?

  5. The list data structure • Implementation 1: Contiguous memory • Use a dynamic array • How is each operation implemented? • How efficient is each operation? • Random access capability is good for retrieval if we use an index for element access • Important: The list ADT does not provide random access. • We need to shift elements every time we insert or delete • We need to reallocate whenever the array fills up.

  6. The list data structure • Implementation 2: Linked memory • Use a node structure to store the data and a pointer to the next node, to create a chain of nodes. • Uses more space than the array (due to the pointers) but insert/delete do not require shifting. • However, deleting requires us to traverse the whole list in order to access the predecessor of the node to be deleted. • Easy solution: keep in mind the abstract image of a linked list! • Move the next node's contents into the one to be deleted, and then physically remove the next node. • We can use a similar trick for the insert operation • Does this work in all cases?

  7. Other list flavors • Doubly-linked list • Each node has a pointer to its successor and its predecessor. • Faster insert/delete, but more space. • Circular list • The last node points back to the head. • Sorted list • Items stored in sorted order. • Which implementation provides faster operations? Array or linked memory?

  8. Other list flavors • XOR list • A space saving list • Instead of both a previous and next pointer, store the XOR of the predecessor and successor. • Node B stores &A XOR &C • If you are at B and know the address of A, you can compute the address of C. • The list can be traversed in any direction, provided you know where you came from. • Interesting, but not very useful...

  9. Other list flavors • Unrolled linked list • A space saving list • Store k data items in each node • It's a list of arrays • Reduces cache misses • Each node should be at least half-full • If a node is too empty after a delete, merge it with a neighbor. • If a node overflows after an insert, split it.

  10. Other list flavors • Satellite list • An easily reversible list • Developed for use in TSP algorithms • Imagine each node as having two "satellites", north and south. A chain of pointers links all the northern satellites and another chain links all the southern ones. • Reversing part of the list requires changing only 4 pointers. • Compare this to reversing a doubly-linked list.

More Related